您的位置:首页 > 其它

直接插入排序

2016-06-06 12:47 218 查看
直接插入排序:每趟将一个待排序的元素作为关键字,按照其关键字的大小插入到已经排好的部分序列的适当位置上,直到插入完成。

/*直接插入排序*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
#define MAX 11
void input(int num[])//产生10个随机数 1......10(MAX-1)
{
int i;
srand((unsigned)time(NULL));
for(i=1; i<MAX; i++)
num[i]=rand()%100; //产生100以内的随机数
}
void output(int num[])
{
int i;

for(i=1; i<MAX; i++)
{
printf("%5d", num[i]);
if(0 == i%10)
printf("\n");
}
printf("\n");
}
void direct_insert_sort(int num[], int left, int right)//数组 1 10
{
int n=right-left+1;
int i,j,temp;
for(i=2;i<=n;++i)
{
temp=num[i];//待插入元素
j=i-1;
while(j>=1&&temp<num[j])//如果待排元素之前元素大于待排元素,则后移一位
{
num[j+1]=num[j];
--j;
}
num[j+1]=temp;//找到插入位置,将暂存的待排元素插入
}
}
void main()
{
int num[MAX];

input(num);

printf("sort before...\n");
output(num);
direct_insert_sort(num, 1, MAX-1);

printf("sort after...\n");
output(num);
std::cin.get();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: