排序算法(三)之插入排序
2011-12-25 14:53
127 查看
谈论排序的时候,绝对不会少了插入排序算法,它实在是太经典了,而且十分简单。
算法:插入排序
Insertion_sort(A)
for j = 2 to A.length
do key=A[j]
i = j-1
while(i>0 &&A[i]>key)
do A[i+1]=A[i]
i = i-1;
A[i+1]=key
我是那扑克牌研究了下才领悟的。。
C++代码:
算法:插入排序
Insertion_sort(A)
for j = 2 to A.length
do key=A[j]
i = j-1
while(i>0 &&A[i]>key)
do A[i+1]=A[i]
i = i-1;
A[i+1]=key
我是那扑克牌研究了下才领悟的。。
C++代码:
//插入排序很明显为O(n^2),但在一定条件下比快排好,比如说基本排好序的序列 //插入排序用O(n),快排用O(nlgn)。而且快排在worst_case中, //快排也是O(n^2)。 //code for testing InsertSort by ouyang #include <iostream> using namespace std; void InsertSort(int *a,int len) { //从第二张牌开始排序,因为我们默认第一张就是排好的 //扑克牌分为3部分: //1.已排好的,从1到j-1 //2.拿在手上待排的j //3.未排好的j+1到n //拿在手上的排如果比已排好的i大,那么就排在i之后 //如果比i小,那么就和i的之前的一个比较,直到i==1 //然后把这张牌插入到i+1处。 for(int j=2; j<=len; j++) { int key=a[j]; int i=j-1; while(i>=1 && a[i]>key) { a[i+1]=a[i]; i--; } a[i+1]=key; } } int main() { int array[9]= {NULL,1,3,5,2,4,7,0,1}; int len=sizeof(array)/sizeof(int); InsertSort(array,len); for(int j=1; j<=len; j++) cout<<array[j]<<" "; cout<<endl; return 0; }
相关文章推荐
- 排序算法之 插入排序
- 排序算法之插入排序
- 排序算法-插入排序
- 排序算法之插入排序
- 排序算法-------插入排序
- 排序算法一(冒泡排序、选择排序、插入排序)
- 排序算法-插入排序 Insertion Sort Θ(n-n)
- 排序算法——插入排序
- 排序算法总结之插入排序
- 排序算法——插入排序
- 排序算法,插入排序,通俗解释
- 排序算法之插入排序
- 几种常见的排序算法(插入排序,希尔排序,归并排序和快速排序)——希尔排序
- 排序算法之二--希尔排序(属于插入排序中的一种)
- 黑马程序员——java基础排序算法:选择排序、冒泡排序和插入排序
- 排序算法——插入排序
- 各种排序算法实现——基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序算法之插入排序