数组(六)--插入排序
来源:互联网 发布:java 字符串相等 编辑:程序博客网 时间:2024/06/05 11:45
基本思想:
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
要点:设立哨兵,作为临时存储和判断数组边界之用。
直接插入排序示例:
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。
public class Demo10 {public static void main(String[] args) {int arr[] = { 8,6,9,7,13,12,4 };insertSort(arr);printArray(arr);}public static void insertSort(int[] arr){ int length=arr.length; //数组长度 int j; //当前值的位置 int i; //指向j前的位置 int key; //当前要进行插入排序的值 //从数组的第二个位置开始遍历值 for(j=1;j<length;j++){ key=arr[j]; i=j-1; //a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移 while(i>=0 && arr[i]>key){ arr[i+1]=arr[i]; //将a[i]值后移 i--; //i前移 }//跳出循环(找到要插入的中间位置或已遍历到0下标) arr[i+1]=key; //将当前值插入 } } //打印数组public static void printArray(int[] arr){System.out.print("[");for(int i=0;i<arr.length;i++){if(i!=arr.length-1)System.out.print(arr[i]+" ");elseSystem.out.print(arr[i]+"]");}}}
阅读全文
0 0
- 数组(六)--插入排序
- 插入排序(数组)
- (六)简单排序—插入排序
- 排序七部曲之(六)插入排序
- 排序之简单插入排序(数组)
- 数组排序-插入排序
- 数组排序---插入排序
- Java排序算法(六):直接插入排序
- Java排序算法(六):直接插入排序
- Java排序算法(六):直接插入排序 .
- Java排序算法(六):直接插入排序
- 排序算法(六)二分双插入排序
- Java排序算法(六):折半插入排序
- 【python】python数据结构(六)——排序:插入排序
- Java内部排序(六)-(插入排序法之折半插入排序)
- 数组排序(冒泡,选择,插入,希尔)
- Java-数组排序(选择,冒泡,插入)
- 直接插入排序(数组实现)
- ID生成工具类,各种id生成策略
- 可变长数组
- POJ2796 Feel Good 单调栈
- Activity--基础
- convertToRinex.exe 程序错误
- 数组(六)--插入排序
- TCP客户/服务器程序示例
- C#基础(11)——面向过程、面向对象、类中方法
- 59. Spiral Matrix II
- 模拟实现库函数strcpy
- 深度学习目标检测方法
- JDK 8.0 新特性——函数式接口和Lambda 表达式
- Machine Learning 之简单绘制决策树
- Oracle和MySql面试题