直接插入排序算法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语言插入排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)