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

来源:互联网 发布:安卓去视频广告软件 编辑:程序博客网 时间:2024/05/21 09:20

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)

0 0
原创粉丝点击