Insertion_Sort(插入排序)
2012-11-01 21:42
302 查看
自己编一遍。。。防止遗忘,同时增加熟练度。罗列下来自百科的算法描述和基本步骤
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2
INSERTION-SORT(A)
1 forj←
2 tolength[A]
2 dokey← A[j]
3 Insert A[j]
into the sorted sequence A[1..j-1].
4 i← j-1
5 whilei>0
and A [i]
>key
6 do A [i+1]
← A [i]
7 i ← i-1
8 A[i+1]
← key
算法描述
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2
伪代码
INSERTION-SORT(A)1 forj←
2 tolength[A]
2 dokey← A[j]
3 Insert A[j]
into the sorted sequence A[1..j-1].
4 i← j-1
5 whilei>0
and A [i]
>key
6 do A [i+1]
← A [i]
7 i ← i-1
8 A[i+1]
← key
/****************************************** ** ** Author: Wan KaiMing ** Date: 2012-11-01-21.18 星期四 ** *******************************************/ //////////插入排序(从小到大的排序) //////最好情况:O(n) 最坏情况:O(n^2) 稳定的排序 //////原理:取定一个key,首先保证<该元素之前的为有序>,然后从后往前遍历,key<a[j]则往前继续找 /////// 同时a[j]后移,直到找到自己的位置 #include<iostream> #include<string> using namespace std; int main(){ int a[]={9,8,7,6,5,4,3,2,1}; int i; int key; cout<<"未经排序的数组为:"; for(i=0;i<9;i++) cout<<a[i]<<' '; cout<<endl; for(i=1;i<9;i++){ key=a[i]; //这是一个常量 int j=i-1; //j在i前一个位置开始 while(j>=0&&key<a[j]){ //如果k比前面的小并且j>0那么前面的元素一次后移,包括j=0的情况 a[j+1]=a[j]; --j; } a[j+1]=key; } cout<<endl; cout<<"经插入排序的数组为:"; for(i=0;i<9;i++) cout<<a[i]<<' '; cout<<endl; return 0; }
相关文章推荐
- 排序算法——插入排序(Insertion Sort)
- Insertion_Sort(插入排序)
- Insertion Sort List 链表的插入排序
- 链表插入排序(insertion-sort-list)
- 插入排序(INSERTION_SORT)
- insertion sort(插入排序)
- 算法学习记录-排序——插入排序(Insertion Sort)
- 插入排序(insertion sort)
- Insertion Sort(插入排序)
- 经典排序算法 – 插入排序Insertion sort
- [MIPS汇编语言]InsertionSort插入排序
- 算法从排序开始——插入排序(Insertion Sort)C语言及Java实现
- 插入排序 (Insertion sort)
- LeetCode Insertion Sort List 链表的插入排序
- 插入排序(1)InsertionSort
- 插入排序(Insertion-sort)
- 插入排序——Insertion Sort
- 排序算法(一)—插入排序(Insertion sort)
- 算法-插入排序(Insertion Sort)
- 插入排序(Insertion Sort)