选择法排序.pptVIP

  • 15
  • 0
  • 约1.29千字
  • 约 4页
  • 2017-08-09 发布于重庆
  • 举报
选择法排序.ppt

* n=7 初始: [ 49 38 65 97 76 13 27 ] i=1 13 49 一趟: 13 [38 65 97 76 49 27 ] i=2 27 38 二趟: 13 27 [65 97 76 49 38 ] 三趟: 13 27 38 [97 76 49 65 ] 四趟: 13 27 38 49 [76 97 65 ] 五趟: 13 27 38 49 65 [97 76 ] 六趟: 13 27 38 49 65 76 [97 ] 例 用选择法对n个数排序(由小到大) 选择算法: (1)首先通过n-1次比较,从n个数中找出最小的元素,记住最小元素的下标, 将它与第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上。 (2)再通过n-2次比较,从剩余的n-1个数中找出次小的数,记住次小元素的下标,将它与第二个数交换—第二趟选择排序。 (3)重复上述过程,共经过n-1趟排序后,排序结束。 选择法 输入n 个数给a[1] 到 a[n] for i=1 to n-1 for j=i+1 to n a[j]a[k] 真 假 k=j 输出a[1] 到 a[n] k=i a[i]?a[k] i != k 真 假 #include stdio.h void main() { int a[11],i,j,k,x; printf(Input 10 numbers:\n); for(i=1;i11;i++) scanf(%d,a[i]); printf(\n); for(i=1;i10;i++) { k=i; for(j=i+1;j=10;j++) if(a[j]a[k]) k=j; if(i!=k) { x=a[i]; a[i]=a[k]; a[k]=x;} } printf(The sorted numbers:\n); for(i=1;i11;i++) printf(%d ,a[i]); } 例 初始: [ 49 38 65 97 76 13 27 ] k j i=1 13 49 一趟: 13 [38 65 97 76 49 27 ] i=2 27 38 k k k k j j j j j j j j j j k纪录最小数的下标 n=7

文档评论(0)

1亿VIP精品文档

相关文档