选择排序
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
只回答业务咨询
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
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 90 91 |
#include <iostream> #include <algorithm> using namespace std; void select(int a[], int len) { /* 1. 将第一个数的位置设为最小位置,然后将这个数与后面所有的数进行比较 2. 如果这个最小数大于后面的数, 则将后面这个值所在的位置设为最小位置 3. 再用这个新的最小位置的最小值向后比较,直到没有比最小值更小的 排序数组: 5 7 4 2 6 第一次排序: min = 0 最小值:a[0] = 5 5(最小) 7 4 2 6 5 7 4(最小) 2 6 min = 2 比较:5<-->4 5 7 4 2(最小) 6 min = 3 比较:4<-->2 排序后:2 7 4 5 6 第二次排序: min = 1 最小值:a[1] = 7 2 7(最小) 4 5 6 2 7 4(最小) 5 6 min = 2 比较:7<-->4 2 7 4(最小) 5 6 min = 3 比较:4<-->5 2 7 4(最小) 5 6 min = 4 比较:4<-->6 排序后:2 4 7 5 6 第三次排序: min = 2 最小值:a[2] = 7 2 4 7(最小 5 6 2 4 7 5(最小) 6 min = 3 比较:7<-->5 2 4 7 5(最小) 6 min = 3 比较:5<-->6 排序后:2 4 5 7 6 第四次排序: min = 3 最小值:a[3] = 7 2 4 5 7(最小) 6 2 4 5 7 6(最小) min = 4 比较:7<-->6 排序后:2 4 5 6 7 */ for (int i=0; i<len; i++) { cout<<"第"<<i+1<<"次排序:"<<endl; int min = i; //制定第一个位置为最小值 //循环依次向后比较 for (int j=i+1; j<len; j++) { cout<<"旧的最小值 a[min] = "<<a[min]; if (a[j]<a[min])//将后面的位置和最小值比较 min = j; //如果比最小值还小,则将新的位置设为最小位置 //用交换后的这个最小值,再与后面的值进行比较 cout<<", 新的最小值 a[min] = "<<a[min]<<endl; cout<<"交换后的最小位置 min = "<<min<<endl; } swap(a[min], a[i]);//将最小值排到最前 //输出一轮排序后的结果 cout<<"第"<<i+1<<"次排序的结果:"; for (int x=0; x<len; x++) { cout<<a[x]<<" "; } cout<<endl<<endl;; } } void show(int a[], int len) { for (int i=0; i<len; i++) { cout<<a[i]<<" "; } cout<<endl; } int main() { int a[5] = {5,7,4,2,6}; cout<<"选择排序:"<<endl; cout<<"排序前:"<<endl; show(a, 5); cout<<endl; select(a, 5); cout<<endl; cout<<"排序后:"<<endl; show(a, 5); return 0; } |
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=168