插入排序(insertion sort)
2014-02-21 00:00
246 查看
摘要: 排序 直接插入排序
直接插入排序
![](http://static.oschina.net/uploads/space/2014/0221/094634_H1dS_1452675.png)
排序过程如上图(图非原创)
该排序原理如下:
将一个拥有n个元素的待排序的数据序列R数组当成两个序列(本身还是一个序列),一个有序序列,一个无序序列。刚开始时,有序序列中只有一个元素,也就是R[0],而无序序列中则是R[1]到R[n-1]。然后每次拿出无序序列中第一个元素,此时是R[1],将其与有序序列中的最后一位数字作比较,如果无序序列中的第一个元素<有序序列中的最后一个元素,说明此时要对该数字进行排序。而排序的操作则是将无序序列中的第一个元素进行缓存到变量temp,然后与有序序列中的最后一个元素比较,如果temp比有序序列中的最后一个元素小,那么将有序序列的最后一个元素向后移动一位,然后接着拿有序序列中的前一位与temp比较,直到找到这个数值(temp)合适的位置,然后将该数值直接插入到该位置上。所以叫做直接插入排序。
具体代码如下:
直接插入排序
![](http://static.oschina.net/uploads/space/2014/0221/094634_H1dS_1452675.png)
排序过程如上图(图非原创)
该排序原理如下:
将一个拥有n个元素的待排序的数据序列R数组当成两个序列(本身还是一个序列),一个有序序列,一个无序序列。刚开始时,有序序列中只有一个元素,也就是R[0],而无序序列中则是R[1]到R[n-1]。然后每次拿出无序序列中第一个元素,此时是R[1],将其与有序序列中的最后一位数字作比较,如果无序序列中的第一个元素<有序序列中的最后一个元素,说明此时要对该数字进行排序。而排序的操作则是将无序序列中的第一个元素进行缓存到变量temp,然后与有序序列中的最后一个元素比较,如果temp比有序序列中的最后一个元素小,那么将有序序列的最后一个元素向后移动一位,然后接着拿有序序列中的前一位与temp比较,直到找到这个数值(temp)合适的位置,然后将该数值直接插入到该位置上。所以叫做直接插入排序。
具体代码如下:
public int[] sort(int[] sort) { int temp; // 监视哨,也就是缓存即将用于比较的数字 int i, j; // 从数组第2个数字开始与前一个数字比较 for (i = 1; i < sort.length; i++) { if (sort[i] < sort[i - 1]) { temp = sort[i]; // 将要进行插入的数字缓存 // 查找这个数字的适当位置 // 将缓存的数字temp与有序序列中最后一位数字依次向前进行比较, // 如果它比有序序列中的数字小,那么将有序序列中的那个数字向后移一位, // 否则该位置就是temp元素应该在的位置,那么插入该数字即可。 for (j = i ; j > 0 && sort[j-1] > temp; j--) { sort[j] = sort[j-1]; } sort[j] = temp; } } return sort; }
相关文章推荐
- 插入排序(Insertion Sort)
- 算法系列-------直接插入排序(InsertionSort)
- 插入排序(Insertion Sort)
- 插入排序(InsertionSort)
- 插入排序(insertion sort)算法实现
- 【排序算法】 插入排序 insertion sort(插入类排序)
- 插入排序Insertion Sort
- [Leetcode] insertion sort list 链表插入排序
- 插入排序-Insertion sort
- LeetCode-Insertion Sort List-链表插入排序-链表操作
- 【lintcode】——链表插入排序-Insertion Sort List
- 插入排序(InsertionSort)
- 插入排序:直接插入排序-Direct insertion sort
- 直接插入排序 direct insertion sort
- 插入排序(InsertionSort)
- 1、直接插入排序(InsertionSort)-C#实现
- 排序算法总结(一)插入排序【Insertion Sort】
- 插入排序 直接插入排序的PHP实现 Straight Insertion Sort
- 简单插入排序(Insertion Sort)——插入类排序法(Java实现)
- 直接插入排序(Insertion Sort)