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

本文共 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/7564941.html

你可能感兴趣的文章
性能测试 vbs使用(一)
查看>>
jQuery基础
查看>>
BZOJ5312:冒险——题解
查看>>
echarts,两点连线,中间断裂
查看>>
samba简易配置
查看>>
庆祝在CNBlogs开博!
查看>>
javascript reverse string
查看>>
南阳oj 题目6 喷水装置(一)
查看>>
运筹学上机实验 - 单纯形方法的两阶段法
查看>>
CF294C Shaass and Lights
查看>>
oracle 11g 报错记录
查看>>
文件状态是否变化
查看>>
MongoDB的副本集Replica Set
查看>>
Maven项目中的配置文件找不到以及打包问题
查看>>
面向对象
查看>>
HDU 1058 Humble Numbers
查看>>
NYOJ The Triangle
查看>>
wps10.1中将txt转为excel
查看>>
解决执行脚本报syntax error: unexpected end of file或syntax error near unexpected token `fi'错误的问题...
查看>>
[BZOJ3312][USACO]不找零(状压DP)
查看>>