图3For循环流程图
五、算法分析
5.1原理分析
(1)选择排序
基本思想:
在待排序的一组数据元素中,选出最小的一个数据元素与第一个位置的数据元素交换;然后在剩下的数据元素当中再找最小的与第二个位置的数据元素交换,循环到只剩下最后一个数据元素为止。
(2)起泡排序
基本思想:
相邻的两个元素进行比较,将小的调到前面,大的调到后面。
(3)直接插入排序
待排序的记录放在数组R[0…n-1]中排序过程中某一时刻,R被划分成两个子区间R[0…i-1](有序和)R[i…n-1](无序)。
直接插入的基本操作是将当前无序区的一个记录R[i]插入到有序区R[0…i-1]中适当的位置
(4)快速排序
基本思想:
在待排序的数组的n个元素中取一个元素(一般取第一个),将其移动到这样的位置:
在其之前的元素的值都小于它,在其之后的元素都大于它,这样是一趟快速排序;然后对数组的两个部分进行同样的操作。
5.2算法时间复杂度分析:
5.2.1、冒泡排序:
bubbleSort()
冒泡排序算法分析:
(1)最好情况,待排序的文件已是有序文件:
只需要进行1趟排序,共计比较关键字的次数为n-1,不交换记录。
(2)最坏情况,要经过n-1趟排序,所需总的比较关键字的次数为(n-1)+(n-2)+...+1=n(n-1)/2,交换记录的次数最多为(n-1)+(n-2)+...+1=n(n-1)/2移动记录次数最多为3n(n-1)/2。
(3)只需要少量中间变量作为辅助空间。
算法是稳定的。
5.2.2、选择排序:
SelectSort
选择排序算法分析:
(1)比较次数,在任何情况下,均为
(2)交换记录的次数,