插入排序的C++代码

插入排序的C++代码,第1张

直接插入排序算法void InsertSort(DataType A[], int n)

{ //采用直接插入排序的方法对数组A中的n的元素排序 DataType x;//用于交换时的暂存

int i,j,k; for(i=1;i<n;i++)

{

//找到插入的位置k:

k=i;

for(j=i-1;j>=0;j--)

{

if(A[i]>A[j])

{

k=j+1;

break;

}

cout<<j<<endl;

}

//

if(k==i)

{

//说明插入的位置是最后一个,不用移动位置

}

else

{

x=A[i];

//将结点后移:

for(j=i;j>k;j--)

{

A[j]=A[j-1];

}

A[k]=x;

}

} return;

} 算法的使用例子#include "iostream"

using namespace std;

#define DataLeng 5

typedef int DataType; //显示数据:

void printData(DataType A[], int n)

{ for(int i=0;i<n;i++)

{

cout<<A[i]<<" ";

}

cout<<endl;

return;

} void main()

{ int data[5]={3,8,5,4,6}; //排序前:

cout<<"<1>没有排序前的顺序是:"<<endl;

printData(data,DataLeng); //排序:

InsertSort(data,DataLeng); //排序后:

cout<<"<2>排序后的顺序是:"<<endl;

printData(data,DataLeng); return;

}

int main ()

{

int i;

DataType a[MaxSize];

SqList L;

srand((unsigned)time(NULL));

for (i=0;i<MaxSize;i++)

{

int number = rand()%MaxSize + 1;

//printf ("%d ",number);

a[i]key = number;

Ldata[i]key = a[i]key;

}

return 0;

}

/折半插入排序/

void BinsertSort(int D[], int L)

{ int i, j, l, r, m;

for (i=2; i<=L; i++)

{ D[0]=D[i];

l=1;

r=i-1;

while (l<=r) { m=(l+r)/2;

if(D[0]<D[m]) r=m-1;

else l=m+1; }

for (j=i-1; j>=r+1; j--) D[j+1]=D[j];

D[r+1]=D[0]; }

}

main()

{ int i;

int D[21]={0,12,5,36,13,22,19,2,7,33,52,23,42,25,31,12,20,8,16,27,2};

BinsertSort(D,20);

printf("\n");

for(i=1;i<=20;i++) printf("%3d",D[i]);

}

以上就是关于插入排序的C++代码全部的内容,包括:插入排序的C++代码、C语言插入排序算法、C语言插入排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9850005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存