您的位置:首页 > 其它

算法导论----<递归插入>及实例

2016-04-09 16:57 260 查看
Code:

/*

插入递归

INSERTION(A,p,r)

for j = p to r

do key = A[j]

i = j-1

while i > 0 and A[i] >key

do A[i+1] = A[i]

i = i - 1

A[i+1] = key

INSERTION-SORT(A,p,r)

if p<r

r = r-1

INSERTION-SORT(A,p,r)

INSERTION(A,p,r)

*/

#include <iostream>

#include <stdlib.h>

using namespace std;

int i,j,key;

/*

void insertion(int *A,int r)

{

int key;

int i;

if(r==1)

{

return;

}

insertion(A,r-1);

key = A[r-1];

for(i = r-2;i>=0 && key<A[i];i--)

{

A[i+1] = A[i];

}

A[i+1] = key;

}

*/

void insertion(int *A,int p,int r){

for(j=p;j<=r;j++)

{

key = A[j];

i = j-1;

while(i>=0 && A[i]>key)

{

A[i+1] = A[i];

i--;

}

A[i+1] = key;

}

}

void insertionsort(int *A,int p,int r)

{

if(p<r)

{

r--;

insertionsort(A,p,r);

insertion(A,p,r);

}

}

int main(){

int A[10] = {99,9,8,7,66,5,4,3,2,1};

insertion(A,0,9);

for( j=0;j<10;j++)

{

cout<<A[j]<<" ";

}

return 0;

}

时间复杂度O(n^2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: