算法思路:假定这些数字的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前k个数之后,可以保证a[1…k]是局部有序的,保证了插入过程的正确性.
package test;
import java.util.Scanner;
public class InserSort {
public static void main(String[] args) {
/*输入十个数字*/
int a[]=new int[10];
Scanner sc=new Scanner(System.in);
System.out.println(“请输入十个数字:”);
for(int i=0;i<10;i++){
a[i]=sc.nextInt();
}
/*排序的算法实现*/
for(int i=1;i<10;i++){
int j=i-1;
int k=a[i];
while(true){
if(a[j]>k){
a[j+1]=a[j];
j–;
if(j==-1)
break;
}
else
break;
}
a[j+1]=k;
}
//输出十个数字
System.out.println(“从小到大的排序为:”);
for(int i=0;i<10;i++){
System.out.println(a[i]);
}
}
}
插入排序时间复杂度:平均时间复杂度为 O(n^2) 最好情况:比较 n-1次,最坏情况比较n(n-1)/2
稳定性: 相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳 定的。
分享到:
相关推荐
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
希尔排序,直接插入排序,折半插入排序算法的实现,c语言实现希尔排序
直接插入排序算法,C语言实现直接插入排序算法
Java语言实现的直接插入排序算法,代码里头有详细注释,注释皆为简单英文,因为这个算法比较简单,欢迎新手下载学习使用,欢迎后期的学习交流!
冒泡排序算法选择排序算法插入排序c语言实现
六种内部排序算法比较:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序。包含实验报告和源代码设计。
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
完整的演示了直接插入排序算法的整个过程,包括整个程序代码的执行和对应的数字变化的过程
使用C语言写的直接插入排序算法,简单易懂,希望对大家学习有帮助
分别实现堆排序和直接插入排序算法,并通过随机数据比较两种排序算法的关键字比较次数和关键字移动次数
直接插入排序算法, 直接插入排序算法
数据排序中的一种最基本的排序算法 比较次数个移动次数约为n的平凡除4, 时间复杂度约为0(n的平凡)
提供五种排序算法的C++实现方法,输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现...
7大排序算法(快速排序,冒泡排序,选择排序,归并排序,插入排序,希尔排序,堆排序)实现源码
包括堆排序算法实现,直接插入排序算法实现和快速排序算法实现。
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
插入类排序算法 包括直接插入排序,希尔排序,折半插入排序
对直接插入排序算法不太了解的可以看看,这里分享给大家了
直接插入排序 冒泡排序 快速排序 直接选择排序 堆排序 二路归并排序 C#源代码 使用C#实现的数据结构中的排序算法