排序算法分析
注:都是以增序为例说明!
一、冒泡排序
A:原理——从数组的第一个位置开始,依次两两比较array[index]与array[index + 1], 如果array[index]大于array[index + 1],则利用temp交换两者位置,直到数组结束。
从数组的第一个位置开始,重复上面的动作,直至第n - 1个位置结束;
从数组的第一个位置开始,重复上面的动作,直至第n - 2个位置结束;
......
B:从第一个元素开始相邻的两个元素两两比较,按照小数在上大数在下的规则交换,一趟下去大数沉底。
再从第一个元素开始两两比较相邻两个元素,直到倒数第二个元素
再从第一个元素开始两两比较相邻两个元素,直到倒数第二个元素
......
冒泡排序也是稳定的排序算法,时间复杂度为T(N)=O(n^2);
冒泡排序的代码为:
二、选择排序
思路:先从所有序列中找到最小的数,放在第一个位置;
再从剩余的所有元素中找到最小的数,放在第二个位置;
......
选择排序是最不稳定的排序算法,eg:[3,3,1], 第一次交换时,第一个3就跑到第二个3后面了。
选择排序的时间复杂度为:T(n)= O (N^2)
关键代码:
三、插入排序
思路:插入排序的思想是数组部分有序,将无序部分插入已有的有序序列中。