上海沪工阀门样册:选择法 冒泡法 排序

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 02:46:50
从键盘输入10个数,要求用选择法和冒泡法排序,怎样的排啊?我的老师要我交作业。急得很啊!那位大哥可以帮我一下吗,或者提示我一下也可以
要求用到C语言

冒泡法实例:
#include<iostream.h>
#include<iomanip.h>

void main()
{
const int arraySize = 10 ;
int a[ arraySize ] = { 2,6,4,8,10,12,89,68,45,37} ;
int i ,hold ;
cout<<"Data items in original order\n" ;

for ( i = 0 ;i<arraySize ; i++)

cout<<setw(4)<<a[i] ;

for(int pass = 0 ;pass <arraySize - 1 ;pass ++)
for( i = 0 ;i< arraySize-1;i++)
{
if(a [i] >a[ i + 1])
{
hold = a[i] ;
a[i] = a[i+1] ;
a[i+1] = hold ;
}
}

cout<<"\nData iteas in ascending order\n";

for( i = 0; i<arraySize ; i++)
{
cout<<setw(4)<<a[i];
}
cout<<endl;

}
简单选择排序

算法:

Smp_Selecpass(ListType &r,int i)

{

k=i;

for(j=i+1;j<n;i++)

if (r[j].key<r[k].key)

k=j;

if (k!=i)

{ t=r[i];r[i]=r[k];r[k]=t;}

}

Smp_Sort(ListType &r)

{

for(i=1;i<n-1;i++)

Smp_Selecpass(r,i);

}

Option Base 1
Option Explicit
'下面的是冒泡排序法
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim a(10) As Integer, k As Integer
For i = 1 To 10
a(i) = CInt(Rnd * (89) + 11)
Print a(i);
Next i
For i = 1 To 9
For j = 1 To 9
If a(j) > a(j + 1) Then
k = a(j)
a(j) = a(j + 1)
a(j + 1) = k
End If
Next j
Next i
Print
For i = 1 To 10
Print a(i);
Next i
Print
Print
End Sub
'下面的是选择排序法
Private Sub Command2_Click()
Dim i As Integer, j As Integer
Dim a(10) As Integer, k As Integer
For i = 1 To 10
a(i) = CInt(Rnd * (89) + 11)
Print a(i);
Next i
For i = 1 To 9
For j = i To 9
If a(i) > a(j + 1) Then
k = a(i)
a(i) = a(j + 1)
a(j + 1) = k
End If
Next j
Next i
Print
For i = 1 To 10
Print a(i);
Next i
Print '空行
Print
End Sub
'下面的是直接排序法
Private Sub Command3_Click()

Dim i As Integer, j As Integer
Dim a(10) As Integer, k As Integer, zz As Integer
For i = 1 To 10
a(i) = CInt(Rnd * (89) + 11)
Print a(i);
Next i
For i = 1 To 9
zz = i
For j = i + 1 To 10
If a(zz) > a(j) Then
zz = j
End If
Next j
If i <> zz Then
k = a(i)
a(i) = a(zz)
a(zz) = k
End If
Next i
Print
For i = 1 To 10
Print a(i);
Next i
Print
Print
End Sub
'下面的是插入排序法
Private Sub Command4_Click()
Dim i As Integer, j As Integer
Dim a(10) As Integer, k As Integer
For i = 1 To 10
a(i) = CInt(Rnd * (89) + 11)
Print a(i);
Next i
Print
For i = 1 To 9
For j = i + 1 To 2 Step -1
If a(j) < a(j - 1) Then
k = a(j)
a(j) = a(j - 1)
a(j - 1) = k
End If
Next j
Next i
Print
For i = 1 To 10
Print a(i);
Next i

End Sub

呵呵,强烈建议你看书,书上说的比我们的强多了。
看着书照搬下来,很容易弄好的

看看数据结构的书,最基本的排序