#include <iostream> using namespace std; int binFind(int e[10],int number,int len); int main(){ /*冒泡升序(i从大往小)*/ int a[]={1,9,2,3,5,7,8,4,6,0},i=0,j=0; int len = sizeof(a)/sizeof(a[0]); cout<<"len="<<len<<endl; for (j=1;j<=(len-1);j++) { //外层循环一共做len-1次 for(i=len-1;i>=(j-1);i--){ //内层循环一共做len-(首次影响)次,其中第一次影响,也就是说第一次做len-1次 //实现上浮的冒泡排序 //上浮排序时,i从大往小变,元素中一定要有a[len-1] if (a[i-1]>a[i]){ int temp = a[i]; a[i] = a[i-1]; a[i-1] = temp; } } } //输出结果 cout<<"a"<<endl; for (int p=0;p<len;p++){cout<<a[p]<<'\t';} cout<<endl; i=0;j=0; /*冒泡降序(i从小往大)*/ int b[]={1,9,2,3,5,7,8,4,6,0}; int len1 = sizeof(b)/sizeof(b[0]); cout<<"len1="<<len1<<endl; bool flag=1; for (j=1;j<=(len1-1)&&flag;j++) { //外层循环一共做len1-1次 flag = 0; for(i=0;i<=len1-j-1;i++){ //内层循环一共做len1-(首次影响)次,其中第一次影响,也就是说第一次做len1-1次 //实现上浮的冒泡排序 //上浮排序时,i从小往大变,元素中一定要有b[0] if (b[i+1]>b[i]){ int temp = b[i]; b[i] = b[i+1]; b[i+1] = temp; flag = 1; //如果flag=1,代表排序还不完全,还需要继续排序 //如果flag=0,代表排序完全,不需要继续排序了 } } } //输出结果 cout<<"b"<<endl; for (int p1=0;p1<len1;p1++){cout<<b[p1]<<'\t';} cout<<endl; /*选择排序*/ int c[]={1,9,2,3,5,7,8,4,6,0}; int len2 = sizeof(c)/sizeof(c[0]); cout<<"len2="<<len2<<endl; for ( i=0;i<(len2-1);i++){//第一个循环len2-1次,即选中第一个元素 到 倒数第二个元素 for( j=i+1;j<len2;j++){//第二个循环 从第二个元素 到 最后一个元素 if (c[j]<c[i]){ int temp = c[i]; c[i] = c[j]; c[j] = temp; } } } //输出结果 cout<<"c"<<endl; for (int p2=0;p2<len2;p2++){cout<<c[p2]<<'\t';} cout<<endl; /*直接选择排序*/ int d[]={1,9,2,3,5,7,8,4,6,0}; int len3 = sizeof(d)/sizeof(d[0]); cout<<"len3="<<len3<<endl; for ( i=0;i<(len3-1);i++){//第一个循环len2-1次,即选中第一个元素 到 倒数第二个元素 int k = i; for( j=i+1;j<len2;j++){//第二个循环 从第二个元素 到 最后一个元素 if (d[j]<d[i]) k = j ; } if (k!=i){ int temp = d[i]; d[i] = d[k]; d[k] = temp; } } //输出结果 cout<<"d"<<endl; for (int p3=0;p3<len3;p3++){cout<<c[p3]<<'\t';} cout<<endl; /*二分排序*/ int e[]={0,1,2,3,4,5,6,7,8,9}; int len4 = sizeof(e)/sizeof(e[0]); cout<<"len4="<<len4<<endl; int Number = 8; cout<<"二分查找算法,应该输出9"<<endl; cout<<binFind(e,Number,len4)<<endl; return 0; } int binFind(int* e,int number,int len){ int start = 0; int end = len-1; int now; while(start<end){ now = (start+end)/2; if(e[now]==number){ return now+1; }else{ if(e[now]<number){ start = now+1; }else{ end = now-1; } } } cout<<"没有找到数字9"<<endl; return -1; }
输出结果为:
len1=10
b
9 8 76 5 4 3 21 0
len2=10
c
0 1 23 4 5 6 78 9
len3=10
d
0 1 23 4 5 6 78 9
len4=10
二分查找算法,应该输出9
9
Process finished with exit code 0