排序算法02:插入排序
来源:互联网 发布:活着电影 知乎 编辑:程序博客网 时间:2024/06/07 02:27
插入排序(InsertionSort)时间复杂度O(N2)
#include "InsertionSort.h"#include "Print.h"// 插入排序算法void InsertionSort(int A[], int N){int j, P;int Tmp;for(P = 1; P < N; P++) // 每增加一个新的数,就依次与前面的数比较,插入到前面已经排好序的数列中,相应的位置后移{Tmp = A[P];for(j = P; j > 0 && A[j-1] > Tmp; j--) // 每次循环保证前面P个都是排好序的{A[j] = A[j-1];}A[j] = Tmp;//printf("(%d, %d) ", P, j);//Print(A, N);}}
主文件main.cpp
#include "InsertionSort.h"#include "SelectionSort.h"#include "ShellSort.h"#include "MergeSort.h"#include "HeapSort.h"#include "Print.h"#include <time.h>#define N 10000int main(){int A[10] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};int B[N];FILE *fp = fopen("data.txt", "r");for(int i = 0; i < N; i++){fscanf(fp, "%d", &B[i]);}clock_t start = clock();// 计时开始// 插入排序Time = 327msInsertionSort(B, N);// 选择排序Time = 967ms// SelectionSort(B, 10000);// 希尔排序Time = 10ms//ShellSort(B, 10000);// 归并排序Time = 27ms//MergeSort(B, N, 0, N - 1);// 堆排序Time = 4694ms//HeapSort(B, N);clock_t stop = clock();// 计时结束//Print(B, N);printf("Time = %dms\n", (stop - start));//Print(B, N);return 0;}
耗时Time = 327ms
- 排序算法02:插入排序
- 排序算法-插入排序
- 排序算法--插入排序
- 排序算法---插入排序
- 排序算法-插入排序
- 排序算法-插入排序
- 排序算法--插入排序
- 排序算法-插入排序
- 排序算法-插入排序
- 排序算法---插入排序
- 排序算法--插入排序
- 排序算法--插入排序
- 排序算法--插入排序
- 排序算法-插入排序
- 排序算法--插入排序
- 排序算法-插入排序
- 排序算法-插入排序
- 排序算法--插入排序
- 汇编学习--7.10--循环
- 取js文件的get参数
- Linux的I/O机制
- 网页禁止保存复制代码大全
- ubuntu安装QQ
- 排序算法02:插入排序
- IndoorAtlas:利用地磁进行室内导航的移动地图应用(附视频)
- DIR:列出当前目录及子目录下的所有文件
- 推荐系统实践
- 【OSC手机App技术解析】- 集成新浪微博Android SDK
- maven添加jar包到本地库
- Linux Socket网络编程(理论分析+充足的示例)
- find命令是功能最强的命令之一
- mina中iofuture 介绍