插入排序思想:
将当前无序序列的首个记录插入到有序序列中,逐个扩充有序序列直至完成排序。
数组有N个元素,那么要求至多进行N(N-1)/2次比较,时间复杂度O(N*N),空间复杂度O(N).
/**
* InsertSort.java
*
* 插入排序
*
* @author Administrator
*/
public class InsertSort {
public static void insertSort(int[] a) {
for (int i = 1; i < a.length; i++)
if (a[i] < a[i - 1]) {
int temp = a[i]; // 复制为哨兵.
int insertLoc = i; // 要插入的位置
for (insertLoc = i - 1; temp < a[insertLoc]; insertLoc--) {
a[insertLoc + 1] = a[insertLoc];
}
a[insertLoc + 1] = temp; // 插入到正确的位置.
}
}
public static void main(String[] args) throws Exception {
if (args.length == 0) {
System.out.println("请输入数字以空格隔开");
System.exit(-1);
}
int[] a = new int[args.length];
for (int i = 0; i < args.length; i++)
a[i] = Integer.parseInt(args[i]);
insertSort(a);
// 输出排序后的数组元素。
for (int i = 0; i < a.length; i++)
System.out.println(a[i]);
}
}
分享到:
相关推荐
交换排序 选择排序 冒泡排序 插入排序
c++ 选择排序 插入排序 快速排序 使用模板写的,感觉不错,哈哈,希望对大家有帮助
快速排序 希尔排序 插入排序 折半排序算法
C# 常用经典算法,选择排序 冒泡排序 快速排序 插入排序 希尔排序
关于c#的一些算法 选择排序 冒泡排序 快速排序 插入排序 希尔排序 归并排序 基数排序 计数排序。。。
采用c++描述了各种排序算法,包括选择排序 冒泡排序 插入排序 基数排序 快速排序 归并排序 。实验内容 1、创建排序类。 2、提供操作:选择排序、冒泡排序、插入排序、*基数排序、*快速排序、*归并排序。 3、*能够...
快速排序 基础排序 冒泡排序 插入排序 快速排序 双路快速排序 三路快速排序 堆排序.zip
排序算法汇总P: 冒泡排序快速排序直接选择排序插入排序希尔排序 堆排序........
binary sort,二分法查找,binary search, 二分法排序,merge sort 混合排序,shell sort 希尔排序,insertion sort 插入排序。数据结构 data structure
插入排序,比较常见的排序算法之一。这是一个例子,一个关于插入排序的例子。
冒泡法排序c语言程序 冒泡法排序c语言程序 基础排序 插入排序 快速排序 双路快速排序 三路快速排序 堆排序
冒泡排序 选择排序 插入排序 归并排序 快速排序 结构体排序(冒泡排序+结构体的应用) 桶排序 二分查找 DFS深搜 c++基础语法+基础算法 c++算法初阶者使用
数据结构排序插入排序和交换排序PPT学习教案.pptx
插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入...
该源文件包括三种排序算法,实现效率教高,代码量也不大
插入排序 冒泡排序 堆排序 基数排序 选择排序 快速排序的源码 java实现
归并排序,插入排序,以及两种排序算法的结合C++实现
插入排序插入排序插入排序插入排序插入排序插入排序插入排序
汇总了数据结构中的排序算法 希望对大家有用
(1)用大根堆排序的基本思想 ① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 ② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R...