《(8.37)--8.4C语言程序设计选择排序.ppt》由会员分享,可在线阅读,更多相关《(8.37)--8.4C语言程序设计选择排序.ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计四、选择排序1.算法思想第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置;然后再从剩余的未排序元素中选出最小(大)元素,然后放到未排序元素起始位置以此类推,直到全部待排序的数据元素的个数为1。第一趟:用第1个值和后面的比较,将小数交换到前面(将大数交换到后面),逐次比较,直到将最小的数放在第1位;四、选择排序1.算法思想对应位置 a0 a1 a2 a3 a4 a5 a6第一次 12 4 45 21 2 9 18第二次 4 12 45 21 2 9 18第三次 4 12 45 21 2 9 18第四次 4 12 45 21 2 9 18第五次 2 12
2、45 21 4 9 18第六次 2 12 45 21 4 9 18最后值 2 12 45 21 4 9 18 四、选择排序1.算法思想对应位置 a1 a2 a3 a4 a5 a6 第一次 12 45 21 4 9 18 第二次 12 45 21 4 9 18 第三次 12 45 21 4 9 18 第四次 4 45 21 12 9 18 第五次 4 45 21 12 9 18 最后值 4 45 21 12 9 18 思考:一共需要几趟?四、选择排序1.算法思想N个数据需要N-1趟定义数组,输入数据;int a10;for(i=0;i10;i+)scanf(%d,&ai);排序:双重循环输出:f
3、or(i=0;i10;i+)printf(%d,ai);详细分析一下排序,注意数组的下标取值四、选择排序2.算法描述for()i趟排序;i=0;iN-1;i+for(j=?;)如果ai大于后者,交换j=i+1;jaj)x=ai;ai=aj;aj=x;四、选择排序排序:双重循环2.算法描述for(i=0;iN-1;i+)for(j=i+1;jaj)t=ai;ai=aj;aj=t;#define N 8main()int aN=43,38,55,99,72,12,27,30,i,j,t;printf(nBefore sorted:n);for(i=0;iN;i+)printf(%5d,ai);pr
4、intf(the sorted numbers:n);for(i=0;iN;i+)printf(%d,ai);printf(n);数据数据准备准备选择选择排序排序数据数据输出输出控制比较的趟数,循环控制比较的趟数,循环一次表示比较一趟一次表示比较一趟控制趟内比较的次数,控制趟内比较的次数,循环一次表示比较一次循环一次表示比较一次三、冒泡排序3.算法代码第一趟:用第1 个值和后面的比较,不立即交换到前面,后面与之比较,找到最小的数,最后与第1数交换。四、选择排序4.改进算法对应位置 a0 a1 a2 a3 a4 a5 a6 temp第一次 12 4 45 21 2 9 18 0第二次 12 4
5、45 21 2 9 18 1第三次 12 4 45 21 2 9 18 1第四次 12 4 45 21 2 9 18 1第五次 12 4 45 21 2 9 18 4第六次 12 4 45 21 2 9 18 4最后值 2 4 45 21 12 9 18 四、选择排序4.改进算法对应位置 a0 a1 a2 a3 a4 a5 a6 temp第一次 12 4 45 21 2 9 18 0第二次 12 4 45 21 2 9 18 1 .最后值 2 4 45 21 12 9 18 比较表达式是什么?if(ajatemp)temp=j;如果temp和i不相等则交换四、选择排序4.改进算法for(i=0;iN-1;i+)temp=i;for(j=i+1;jN;j+)if(ajatemp)temp=j;if(temp!=i)x=atemp;atemp=ai;ai=x;四、选择排序4.改进算法感谢聆听