(2选择排序(算法3-6) 基本思想:每次从待排序的记录中选出关键字最 小(或最大)的记录,顺序放在已有序的记录序 列的最后(或最前)面,直到全部数列有序。 {a1},{a2,a3,a4,,an} {{a1 a2( },{a3如),a4 an {al1),a2 (n-1) an 有序 无序 上一页 停止放映 下一页 第16页
下一页 上一页 停止放映 第 16 页 ⑵选择排序(算法3-6) ⚫ 基本思想:每次从待排序的记录中选出关键字最 小(或最大)的记录,顺序放在已有序的记录序 列的最后(或最前)面,直到全部数列有序。 {{a1},{a2,a3,a4,…,an}} {{a1(1) ,a2(1)},{a3(1) ,a4(1)…,an (1)}} …... {{a1(n-1) ,a2(n-1) ,…}, {an(n-1)}} 有序 无序
选择排序算法步骤 ● Stepl从原始数列{a1,a2a3,…,an}开 始进行排序,比较n-1次,从中选出最小 关键字,放在有序数列中,形成{a1} a2,a3,…,an}有序数列和无序数列两部 分,完成第1趟排序 step2处理第趟排序时(i=2,3水字, n 从剩下的n-i+1个元素中找出最小 上一页 放在有序数列的后面 停止放映 SteD3重复Step2,共进行n-1趟的选择 处理,数列全部有序 下一页 第17页
下一页 上一页 停止放映 第 17 页 选择排序算法步骤 ⚫ Step1 从原始数列{a1 , a2,a3,…,an}开 始进行排序,比较n-1次,从中选出最小 关键字,放在有序数列中,形成{a1}、 {a2,a3,…,an}有序数列和无序数列两部 分,完成第1趟排序。 ⚫ Step2 处理第i趟排序时(i=2,3,…,n), 从剩下的n-i+1个元素中找出最小关键字, 放在有序数列的后面。 ⚫ Step3 重复Step2,共进行n-1趟的选择 处理,数列全部有序
选择排序算法 select sort(int *item, int count I int 1, j,k,t for(i=0; i<count-1; ++i) I k=i item] for(j=i+1; j<count; ++j) I if(item[j]<t t=item]: I 上一页 item[k]=item[il: item[i]=t 停止放映 下下页 第18页
下一页 上一页 停止放映 第 18 页 选择排序算法 select_sort(int *item,int count) { int i,j,k,t; for(i=0;i<count-1;++i) { k=i; t=item[i]; for(j=i+1;j<count;++j) { if(item[j]<t) { k=j; t=item[j]; } } item[k]=item[i]; item[i]=t; } }
选择排序算法主程序 #includestdio h #define n 7 static int n=0 main i int a[100],i printf( Enter ali]\n") for(i=0: i<N: 1++) scanf (%d", &alil select sort(a, N) 上一页 for(i=0; i<N; i++) 停止放映 printf("%d, ali] 下一页 printf( \nn=%d\n",n) 第19页
下一页 上一页 停止放映 第 19 页 选择排序算法主程序 #include "stdio.h" #define N 7 static int n=0; main() { int a[100],i; printf("Enter a[i]\n"); for(i=0;i<N;i++) scanf("%d",&a[i]); select_sort(a,N); for(i=0;i<N;i++) printf(" %d ",a[i]); printf("\nn=%d\n",n); }