排序原理
1.把所有的元素分为两组,已经排序的和未排序的;
2.找到未排序的组中的第一个元素,向已经排序的组中进行插入;
3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位;
代码实现
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public static void insertSort(double a[]){ //i为待插入元素的索引 for(int i=1;i<a.length;i++){ for(int j=i;j>0;j--){ //比较索引j处的值和j-1处的值,如果j-1处的值比j的值大,那么交换数据,如果不大,则插入结束 退出循环 if(a[j-1]>a[j]) { double temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } else break; } } }
测试
复制代码
1
2
3
4
5
6
7public static void main(String[] args) { double arr[]={4,5,3,6,11,14,1,8}; insertSort(arr); System.out.println(Arrays.toString(arr)); //[1.0, 3.0, 4.0, 5.0, 6.0, 8.0, 11.0, 14.0] }
算法分析
比较是从有序序列的末尾开始,也就是想要插入的元素和已经有序的最大者开始比起,如果比它大则直接插入在其后面,否则一直往前找直到找到它该插入的位置。如果碰见一个和插入元素相等的,那么把要插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。
最后
以上就是清爽冰棍最近收集整理的关于排序算法——直接插入排序(insertSort)的全部内容,更多相关排序算法——直接插入排序(insertSort)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复