排序 之 快排、归并、插入 - <时间复杂度>----掌握思想和过程
2016-09-12 23:46
253 查看
俗话说:天下武功无坚不破,唯快不破。对于算法当然也是要使用时间最短、占用空间最小的算法来实现了。
注意:我代码里面打的备注仅供参考,建议不要背模板(因为没有固定的模板),可以写一个数列按着代码跑两圈或者把代码改一下输出每次排序后的结果。
总之,师傅领进门,修行在个人。奋斗把!骚年!
※冒泡排序、选择排序:(不稳定,时间复杂度 O(n^2))
Insert_sort
简述:个人认为插入排序是最简单的,就是从第一个开始,认为第一个数是有序的,然后依次取后面的数字,通过遍历前面的排序好了的数组寻找取到元素的位置。
欢迎码友评论,一起成长。
注意:我代码里面打的备注仅供参考,建议不要背模板(因为没有固定的模板),可以写一个数列按着代码跑两圈或者把代码改一下输出每次排序后的结果。
总之,师傅领进门,修行在个人。奋斗把!骚年!
※冒泡排序、选择排序:(不稳定,时间复杂度 O(n^2))
/* * > File Name: test.cpp * > Author: Ddlm2wxm * > Mail: Ddlm2wxm@163.com * > Created Time: 2016年10月20日 星期四 07时35分53秒 *********************************************************/ #include <iostream> #include <cstdio> using namespace std; void Insert_sort (int a[], int n) { int i, j; for (i = 1; i < n; ++i) { int t = a[i]; for (j = i-1; j >= 0&&t<a[j]; --j) a[j+1] = a[j]; a[j+1] = t; } } int main() { int n; int a[999]; cin >> n; for (int i = 0;i < n; ++i) { cin >> a[i]; } Insert_sort (a, n); for (int i =0;i < n; ++i) { cout << a[i] << " "; } cout << endl; return 0; }
Insert_sort
简述:个人认为插入排序是最简单的,就是从第一个开始,认为第一个数是有序的,然后依次取后面的数字,通过遍历前面的排序好了的数组寻找取到元素的位置。
欢迎码友评论,一起成长。
相关文章推荐
- 数据结构(C#)--冒泡、插入、快速、堆、归并、希尔、选择各种排序排序过程比较以及各种排序的所用时间的对比
- <菜鸟学算法-A排序(分治的思想:快速排序)>
- C/C++ 数组排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之快速排序
- C/C++ 数组,链表排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之归并排序
- 实验报告<幻方,数组的排序和向数组中插入某个数>
- C/C++ 数组排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之希尔排序
- C/C++ 数组排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之堆排序
- MIT算法导论-插入排序与归并排序及时间复杂度计算
- 时间和空间复杂度<二>
- 算法的时间复杂度和空间复杂度-总结<转载>
- c++ 数组 有序数组插入 归并排序思想
- List<Map>按时间排序
- 数据结构与算法之高级排序(快速/归并)<十二>
- n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|<=K,请设计一种排序算法,对该序列进行排序。注:算法时间复杂度为O(nlgn)的得0分,复杂度为O(nk) 的得两分,总分是20分
- 直接插入排序的算法思想和实现过程
- <菜鸟学算法-A排序(分治的思想:堆排序)>
- 数据结构与算法之基础排序(冒泡/插入/选择)<十>
- 冒泡,选择,插入,时间复杂度O(n2)算法感悟(此博文属于对于排序过程有大概了解的同学)
- 数据结构各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)
- List<Map<String,Object>>按照子元素中的时间排序