插入排序
来源:互联网 发布:软件测试脚本 编辑:程序博客网 时间:2024/06/07 22:58
插入排序是一种简单的类似于冒泡排序的方法。然而,数据交换次数呈线性化,相对比较稳定。
插入排序的基本思想是不断地将带排序的主键数据插入到有序的序列中,直到所有数据被排序。
原始数据使用随机函数生成。
采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。
数据个数由宏定义给出,也可以轻松地改为输入。
/* * 插入排序算法程序 */#include <stdio.h>#include<stdlib.h>#include <time.h>#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; }}
1 0
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- VS2010 MFC Excel(3)
- ACM第二专题—搜索总结
- 利用求值器绘制三次Bezier曲线
- 红黑树并没有我们想象的那么难(下)
- HashMap学习
- 插入排序
- ACM--贪心--FZU--2111--Min Number
- Makefile经典教程(掌握这些足够)
- 堆排序
- 指针数组和数组指针的内存布局
- Spring 代码中执行事务回滚
- mysql客户端工具使用
- static全局变量与普通的全局变量的区别详细解析
- PHP学习01----PHP简介