排序算法之插入排序
来源:互联网 发布:c语言中的完全数 编辑:程序博客网 时间:2024/05/20 18:18
插入排序
插入排序法的排序思想就是从数组的第二个元素开始,将数组中的每一个元素按照规则插入到已排好序的数组中以达到排序的目的.一般情况下将数组的第一个元素作为启始元素,从第二个元素开始依次插入.由于要插入到的数组是已经排好序的,所以只是要从右向左找到比插入点(下面程序中的insertNote)小(对升序而言)的第一个数组元素就插入到其后面.直到将最后一个数组元素插入到数组中,整个排序过程就算完成.
简单来说:
插入排序算法是一个对少量元素进行排序的有效算法。插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中的牌都是排序好的。
例如:现在我们要用插入算法把数组A={5,2,4,6,1,3},
实现升序排序:
实现代码仅供参考:
<span style="font-size:18px;">public class InsertSort {public static void insertSort(int a[]){int length=a.length; //数组长度int j; //当前值的位置int i; //指向j之前的位置int key; //当前要进行插入排序的值//从数组的第二个位置开始遍历值for(j=1;j<length;j++){key=a[j];i=j-1;//a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移while(i>=0 && a[i]>key){a[i+1]=a[i]; //将a[i]值后移i--; //i前移}//跳出循环(找到要插入的中间位置或已遍历到0下标)a[i+1]=key; //将当前值插入}}public static void main(String[] args) {// TODO Auto-generated method stubint[] arrs = {5,2,4,6,1,3};insertSort(arrs);for(int a :arrs){System.out.print(a+" ");}}}</span>
显示结果:1 2 3 4 5 6
降序排序:
<span style="white-space:pre"></span>public static void selectSort1(int[] nums){int length = nums.length;int j; //记录当前值的位置int i; //记录指向当前值的前一个值位置int key; //记录当前要插入的值//a[i]比当前值小时,a[i]后移一位,空出i的位置,好让下一次循环的值后移for(j=1;j<length;j++){i = j-1;key = nums[j];while(i>=0 && nums[i]<key){ //跟升序差不多的,就是在比较时候不用而已nums[i+1] = nums[i];i--;}nums[i+1]=key;}}
0 0
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之 插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- JZ2440开发板学习------中级(二十七)
- 【环境搭建】Eclipse EE 配置 struts2
- VC 6.0 PostMeessage错误
- Q1.4 Write a method to replace all spaces in a string with ‘%20’.
- [1]C++智能指针详解
- 排序算法之插入排序
- Opencv2.4.9源码分析——MSER
- c# split函数使用
- javascript网页富文本编辑器:kindedit富文本编辑器插件的使用
- MapServer6.4.1教程学习--显示图层内类别(1-3)
- markdown常用语法总结
- openwrt代码框架
- 产品经理之原型范围
- MapServer6.4.1教程学习--标注地图(1-4)