直接插入排序
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();
}
/*直接插入排序*/
#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();
}
相关文章推荐
- UIViewController 调用顺序
- Steve Lin:如何撰写一篇优秀的SIGGRAPH论文
- Linux模式设计系列( 内核与应用关联思考)
- 链表的代码实现
- [Android] 消息处理机制
- VMware VCSA 6.0安装过程
- nginx反向代理安装配置、服务器状态监控(健康检查)
- iOS开发多线程篇—线程安全
- Cisco SG200配置备忘
- js中的原型与原型链的一点理解
- 推荐算法:基于领域的协同滤波
- 沈向洋谈做研究的那些事儿
- spring---mobile模块
- Spring容器启动的第二阶段
- checkbox的三种显示状态
- RPi-001 起点
- 排序函数模板
- opencv bug
- SELinux入门
- 正则表达式