博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入排序
阅读量:7212 次
发布时间:2019-06-29

本文共 1378 字,大约阅读时间需要 4 分钟。

插入排序是一种简单的类似于冒泡排序的方法。然而,数据交换次数呈线性化,相对比较稳定。

插入排序的基本思想是不断地将带排序的主键数据插入到有序的序列中,直到所有数据被排序。

原始数据使用随机函数生成。

采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。

数据个数由宏定义给出,也可以轻松地改为输入。

/* * 插入排序算法程序 */#include 
#include
#include
#define N 7void getData(int [], int);void outputData(int [], int);void insertsort(int a[], int n);int main(void){ int a[N]; getData(a, N); /* 获得数据放入数组a中 */ printf("Unordered datas: "); outputData(a, N); insertsort(a, N); printf("In sorted order: "); outputData(a, N); return 0;}/* 插入排序 */void insertsort(int a[], int n){ int i, j, key; for(i=0; i < n; i++) { key = a[i]; j = i - 1; while(j >= 0 && a[j] > key) { a[j+1] = a[j]; j--; } a[j+1] = key; }}void getData(int d[], int n){ time_t t; srand((unsigned) time(&t)); /* 设置随机数起始值 */ int i; for(i=0; i < n; i++) d[i] = rand() % 1000; /* 获得0-999之间的整数值 */}void outputData(int d[], int n){ int i; for (i = 0; i < n; i++) printf("%d ", d[i]); printf("\n");}
关键代码:

/* 插入排序 */void insertsort(int a[], int n){    int i, j, key;    for(i=0; i < n; i++)    {        key = a[i];        j = i - 1;        while(j >= 0 && a[j] > key) {            a[j+1] = a[j];            j--;        }        a[j+1] = key;    }}

转载于:https://www.cnblogs.com/tigerisland/p/7564940.html

你可能感兴趣的文章
15.节点属性
查看>>
ISO-8859-1编码
查看>>
PHP 代码评审的 10 个提示
查看>>
你知道吗?Web的26项基本概念和技术
查看>>
方案优化:网站实现扫描二维码关注微信公众号,自动登陆网站并获取其信息...
查看>>
Leetcode | Balanced Binary Tree
查看>>
sqlServer对内存的管理
查看>>
挑战密室
查看>>
利用Solr服务建立的站内搜索雏形---solr1
查看>>
5、jmeter-逻辑控制器介绍与使用
查看>>
如何遍历List对象
查看>>
2012年4月19日
查看>>
获取站点所有缓存,以及清除站点缓存
查看>>
oracle 是user_tables里面可以查找到一个表,而用DESC或者insert语句插入时就会报不存在视图。...
查看>>
找水王续
查看>>
cocos2d-x之Node移除HelloWorld节点
查看>>
AtCoder WTF 2019 C2. Triangular Lamps Hard
查看>>
[转].NET Framework、C#、CLR和Visual Studo之间的版本关系
查看>>
sql语句-2-字符串数字日期时间
查看>>
[Python3网络爬虫开发实战] 3.1.2-处理异常
查看>>