1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | (2)选择排序: 基本思想:从数组的未排序区域选出一个最小的元素,把它与数组中的第一个元素交换位置;然后再从剩下的未排序区域中选出一个最小的元素,把它与数组中的第二个元素交换位置。重复上述过程,直到数组中的所有元素按升序排列完成。 【案例】 对一维数组中的十个数据进行从小到大排序: #include<iostream> using namespace std; int main(){ int a[]={1,3,5,8,9,10,7,34,89,46}; int m=0; for ( int i=0;i<10;i++){ int wz=i; for ( int j=i+1;j<10;j++){ if (a[j]<a[wz]){ wz=j; } } m=a[i]; a[i]=a[wz]; a[wz]=m; } for ( int i=0;i<10;i++){ cout<<a[i]<< " " ; } return 0; } (3)插入排序: 基本思想:把一个要排序的数组划分为已排序和未排序的两部分,再从未排序部分逐个去除元素,把它和已排序元素进行比较,从右到左比较相邻的两个元素,如果右边的元素比左边的元素小,则交换两个元素,并向左继续比较和交换,否则就停止比较。按此处理未排序部分的所有元素,最终得到一个按升序排列的有序数组。这种算法也叫直接插入排序。 【案例】 对一维数组中的十个数据进行从小到大排序: #include<iostream> using namespace std; int main(){ int a[]={1,3,5,8,9,10,7,34,89,46}; int m=0; for ( int i=1;i<10;i++){ for ( int j=i;j>0;j--){ if (a[j]<a[j-1]){ m=a[j]; a[j]=a[j-1]; a[j-1]=m; } else { j=0; } } } for ( int i=0;i<10;i++){ cout<<a[i]<< " " ; } return 0; } 桶排序思想: 把每个数组开辟的空间看作一个桶, 将与桶编号相同的数据存入桶中 1 3 5 7 9 8 6 4 2 10 数据b[] 开辟桶的个数大于数据最大值 第一步:桶内初始化为0 第二步:判断数据存入桶中 a[11] a[0]...a[10] if (i==b[j]) a[i]++; 第三步输出: if (a[i]!=0){ i a[i]--; } #include<iostream> #include<bits/stdc++.h> using namespace std; int main(){ int a[10]={1,3,9,9,9,10,2,4,6,8}; int b[1000]; memset (b,0, sizeof (b)); //数组全部初始化为0 // for(int i=0;i<1000;i++){ // b[i]=0; // } for ( int i=0;i<10;i++){ b[a[i]]++; } for ( int i=0;i<1000;i++){ while (b[i]!=0){ cout<<i<< " " ; b[i]--; } } return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步