package com.tw.ds.sort;
/**
*
* <p>插入排序算法
* 插入排序算法步骤
*1.从有序数列和无序数列{a2,a3,…,an}开始进行排序;
*2.处理第i个元素时(i=2,3,…,n) , 数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。
*用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入;
*3.重复第二步,共进行n-1次插入处理,数列全部有序。
* </p>
* @author tangw 2010-11-26
*
*/
public class InsertSortMain {
/**
* @param args
*/
public static void main(String[] args) {
int []arData = {2,6,5,8,7,9,10,256,248,14};
sortAscending2(arData);
//sortAscending(test1);
for(int i=0; i<arData.length; i++){
System.out.println("---i="+i+"---v="+arData[i]);
}
}
/**
*插入排序方法2
* @param arData
*/
public static void sortAscending2(int[] arData){
int in,out;
int len = arData.length;
for(out=1;out<len;out++){
int temp = arData[out];
in = out;
while(in>0 && arData[in-1]>temp){
arData[in] = arData[in-1];
--in;
}
arData[in] = temp;
}
}
/**
*插入排序方法1
* @param with
* @return
*/
public static int[] sortAscending(int []arData){ //整数递增排序
int length = arData.length; //获取待排数组的元素个数;
int []temp = new int[length];
temp[0] = arData[0]; //定义一个只有一个元素的有序数组
for(int i=1; i<length; i++){
for(int j=i-1; j>=0;j--){
if(arData[i] >= temp[j]){ //如果待排序列中的元素大于等于有有序序列中的元素,则插入
temp[j+1] = arData[i];
break;
}else {
temp[j+1] = temp[j]; //给待插入元素预留空间
if(j == 0)
temp[j] = arData[i]; //arData[[i]是有序序列中最小的,因此排在开头
}
}
}
return temp;
}
}
分享到:
相关推荐
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
易语言算法学习 分组插入排序。@易语言学习论坛。
Java语言实现的直接插入排序算法,代码里头有详细注释,注释皆为简单英文,因为这个算法比较简单,欢迎新手下载学习使用,欢迎后期的学习交流!
# sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() #计数排序 # sort.quickSort() #快速排序 该排序算法把每次的排序结果都列出来,可供初学...
使用C语言写的直接插入排序算法,简单易懂,希望对大家学习有帮助
前面文章已经讲完了交换类排序,接下来开始学习插入类排序。顾名思义,所谓插入排序指我们会为每一个数据安排一个适合它的位置并将其插入,直到所有数据就位则排序完成。 直接插入法便是插入排序的典型方法,完全...
用于排序的入门,简单的排序方法,插入类排序,学习算法的开始,内附有txt算法核心思想。代码经过测试,可以运行。欢迎提出意见和指出当中错误。
插入排序是一种简单但有效的排序算法,它将数组分成已排序部分和未排序部分,然后逐个将未排序部分的元素插入到已排序部分的合适位置,逐步构建有序数组。在这个教程中,我们将深入研究插入排序的原理,并提供一个...
本事例中将插入排序和选择排序合并在一个程序里,直观明了,程序简单易懂,是学习数据结构很好的互补
本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构与算法的继续学习和研究奠定了一...
实现直接插入排序、折半插入、冒泡、快速、直接选择、堆、归并排序算法。比较各种 算法的运行速度和时间复杂度,是否为稳定排序。分析每一趟排序结果。
将数字排序,升序和降序 小方法,大作用,大家可以学习。
提供8种排序算法中的直接插入排序,供大家学习参考
各种常用的排序算法,c++泛型实现,对于学习排序算法以及c++泛型编程都是很好的材料
内含有快排、冒泡、插入排序、merge等多种排序法的实现,并附有测试例子,适合算法学习者
给初学者学习算法用,用java实现的排序算法,包括二路归并和插入排序。