算法--直插排序
来源:互联网 发布:软件过程域哪些 编辑:程序博客网 时间:2024/05/16 12:33
直插排序就是将一个记录插入到已经排好序的有序列表中。
如arr[3, 2, 1]进行排序。
首先将arr[1]赋给变量tmp,再用arr[0]与tmp比较。如果arr[0]>tmp,使arr[0]的值右移,空出来的位置放tmp也就是arr[1]
public static void main(String[] args) { int[] src = { 3,2,1,4,5,6,7,16,15,14,13,12,11,10,8,9 }; insertSort(src); print(src);}public static void insertSort(int src[]) { int tmp; for(int i = 1; i < src.length; i++) { tmp = src[i]; int j; for(j = i - 1; j >= 0; j--) { // 判断是否大于tmp,大于则后移一位 if(src[j] > tmp) src[j+1] = src[j]; else break; } src[j+1] = tmp; }}public static void print(int src[]){ for (int i = 0; i < src.length; i++) { System.out.print(src[i] + " "); } System.out.println();}
复杂度:
最好的情况 数组已排好序,每次判断src[j] < tmp ,不需要移位 复杂度为O(n)
最坏的情况 数组倒叙 将比较1+2+…(n-1)次 n*(n-1)/2=O(
阅读全文
0 0
- 算法--直插排序
- 白话算法之直插排序
- 哈希+直插排序
- 直插排序
- 直插排序
- 16 - 12 - 17 十大排序算法总结(一) 之 冒泡,简选,直插,希尔排序
- 简单排序算法的汇总(快速排序、直插排序、希尔排序、选择排序、冒泡排序)
- 直插,折半,二路,希尔排序
- 直插排序(C语言实现)
- 数据结构与算法系列----直插,快排,堆排,归并排序讲解
- 【笔试】Java实现常用的排序算法:直插、冒泡和快排
- 插入类排序:直插,折半插,希尔
- 数据结构之插入排序(直插,折半插,2路插)—参考整理严蔚敏数据结构
- 直插,快排,堆排,归并排序的分析
- 二插排序树各种算法
- FW:[直观学习排序算法] 视觉直观感…
- 贴片、直插元器件封装介绍
- 排序算法 ---选择排序(直排,堆排)(java)
- [HNOI2008]玩具装箱TOY
- 《零基础入门学习Python》学习过程笔记【39类的其他内容】
- [PAT乙级]1015. 德才论 (25)
- Gitlab 安装 网教程
- Login 网易music
- 算法--直插排序
- 第五章 Visual Appearance
- 方维o2o 6.6
- [PAT乙级]1028. 人口普查(20)
- 写点类,再写直线类,算两点间的距离
- 机器学习-1-朴素贝叶斯
- STM32F103的GPIO配置方式
- js中的常见的button绑定事件的方法
- TortoiseSVN 设置 允许修改注释 创建 pre-revprop-change.bat文件