三种排序算法课件.pptVIP

  • 11
  • 0
  • 约3.05千字
  • 约 18页
  • 2017-01-02 发布于浙江
  • 举报
int a[50]; 数组a中存放的是50个学生的C语言成绩,要求编程实现对这50个成绩按从小到大的顺序进行排序。 三种排序算法: 冒泡排序; 插入排序; 选择排序; 冒泡排序的基本思想 冒泡排序是交换排序中一种简单的排序方法。它的基本思想是对所有相邻数组元素的值进行比效,如果是逆序(a[i]a[i+1]),则将其交换,最终达到有序化。其处理过程为: (1)比较第一个数与第二个数,若为逆序a[0]a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第1趟冒泡排序,结果最大的数被安置在最后一个元素位置上 (2)对前n-1个数进行第2趟冒泡排序,结果使次大的数被安置在第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束 插入排序的基本思想是:第1遍,将数组a中的a[0]看作有序序列,将a[1]插入这个有序序列中。若a[1]a[0] ,则a[1]插在a[0]的前面,否则a[1]插在a[0]的后面。第2遍,将a[2]插入前两个数组元素组成的有序序列中,得到3个数组元素组成的有序序列。依此类推,继续进行下去,直到将a[n-1]插入到前面的n-1个数组元素组成的有序序列中,最后得到n个数组元素组成的有序序列。 原序列:[23 ]18 29 49 33 47 15 第一趟:[18 23 ]29 49 33 47 15 第二趟:[18 23 29] 49 33 47 15 第三趟:[18 23 29 49] 33 47 15 第四趟:[18 23 29 33 49] 47 15 第五趟:[18 23 29 33 47 49] 15 第六趟:[15 18 23 29 33 47 49] void insert(int a[ ], int n) { int i, j, key;   for (i = 1; i n; i++)  { key = a[i];        for (j = i - 1; j = 0 a[j] key; j--)    { a[j + 1] = a[j];     }     a[j + 1] = key; } } 写出下列序列采用简单选择排序法的过程 40 58 12 33 90 20 80 65 9 8 5 4 2 0 8 9 5 4 2 0 8 5 9 4 2 0 8 5 4 9 2 0 8 5 4 2 9 0 8 5 4 2 0 9 大数沉底,小数起泡 a[0] a[1] a[2] a[3] a[4] a[5] for(i=0;i5;i++) if (a[i]a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; } 8 5 4 2 0 9 5 8 4 2 0 9 5 4 8 2 0 9 5 4 2 8 0 9 5 4 2 0 8 9 a[0] a[1] a[2] a[3] a[4] a[5] for(i=0;i4;i++) if (a[i]a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; } 5 4 2 0 8 9 4 5 2 0 8 9 4 2 5 0 8 9 4 2 0 5 8 9 a[0] a[1] a[2] a[3] a[4] a[5] for(i=0;i3;i++) if (a[i]a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; } 4 2 0 5 8 9 2 4 0 5 8 9 2 0 4 5 8 9 a[0] a[1] a[2] a[3] a[4] a[5] for(i=0;i2;i++) if (a[i]a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; } 2 0 4 5 8 9 0 2 4 5 8 9 a[0] a[1] a[2] a[3] a[4] a[5] for(i=0;i1;i++) if (a[i]a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; } for(i=0;i5;i++) if (a[i]a[i+1]) { ……} for(i=0;i4;i++) if (a[i]a[i+1

文档评论(0)

1亿VIP精品文档

相关文档