插入排序算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。
通过比较和插入来实现排序,其排序流程如下:
1)首先对数组的前两个数据进行从小到大的排序
2)接着将第三个数据与排好序的二个数据比较。将第三个数据插入合适的位置
3)然后,将第四个数据插入已排好序的前3个数据中。
4)不断重复上述过程,直到最后一个数据插入合适的位置
例如下面的插入排序:
初始数据 118 101 105 127 112
一次排序 101 118 105 127 112
二次排序 101 105 118 127 112
三次排序 101 105 112 127 118
四次排序 101 105 112 118 127
public class InsertSorts {
public static void main(String[] args) {
int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62,
99, 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51 };
int temp = 0;
for (int i = 1; i < a.length; i++) {
int j = i - 1;
temp = a[i];
for (; j >= 0 && temp < a[j]; j--) {
a[j + 1] = a[j]; // 将大于temp的值整体后移一个单位
}
a[j + 1] = temp;
}
for (int i = 0; i < a.length; i++)
System.out.println(a[i]+"\t");
System.out.println("");
}
}
分享到:
相关推荐
希尔排序,直接插入排序,折半插入排序算法的实现,c语言实现希尔排序
直接插入排序法~~~~~内部排序
java编写的插入排序算法
c语言基本插入排序法c语言基本插入排序法c语言基本插入排序法c语言基本插入排序法
插入排序算法c++实现,程序实现插入排序十万个数(调用)。可以改成输入。并附加了程序运行计时,用于测试时间复杂度,可以移除。绝对能用
Java语言实现的直接插入排序算法,代码里头有详细注释,注释皆为简单英文,因为这个算法比较简单,欢迎新手下载学习使用,欢迎后期的学习交流!
冒泡排序算法选择排序算法插入排序c语言实现
一段比较简便、易懂,且能运行的JAVA代码。运用的是插入排序法对10个数字进行排序。
使用C语言写的直接插入排序算法,简单易懂,希望对大家学习有帮助
插入排序算法(动态数组实现) printf("--------插入排序算法的实现--------\n"); printf("输入数组的大小length:\n"); int length=0; scanf("%d",&length); /****动态分配内存初始化数组*********************...
用c语言写得插入排序和折半插入排序,很简单的。 *****多多支持
数据结构中的插入排序算法,C++实现的,算法交流。。。
直接插入排序算法, 直接插入排序算法
使用插入排序算法对输入的n个整数,按照从小到大的顺序排序。 Input Description 第一行输入一个整数n(0)。 第二行输入n个整数。 Output Description 输出排序后的整数,每个整数之间以一个空格分隔。注意:最后...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
这一个原创C语言编写的数组大小排序法,包括插入法和冒泡法.通过学习它的思想,把握这两种基本的算法,达到举一反三的效果。
使用二分方法实现插入排序
完整的演示了直接插入排序算法的整个过程,包括整个程序代码的执行和对应的数字变化的过程