二分查找及排序
baobao小野菊
这个作者很懒,什么都没留下…
展开
-
旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.原创 2016-05-24 23:18:49 · 249 阅读 · 0 评论 -
计数排序
计数排序 //获取数组中最大值 size_t GetMaxNum(int* arr, int len) { assert(arr && len > 0); int i = 0; int maxNum = arr[i++]; for (; i<len; ++i) { if (maxNum < arr[i]) { maxNum = arr[i]; } }原创 2016-10-05 12:10:04 · 403 阅读 · 0 评论 -
归并排序
归并排序原创 2016-10-05 12:04:39 · 260 阅读 · 0 评论 -
堆排序
题目:堆排序原创 2016-05-31 23:31:33 · 327 阅读 · 0 评论 -
快速排序
快速排序 快速排序接近二分查找;时间效率为O(NlogN)-O(N2);原创 2016-06-17 20:07:54 · 563 阅读 · 0 评论 -
冒泡排序
冒泡排序 思路:每遍历一次数组,往上冒一个数字,不断地缩小范围,知道所有的数字都排序完;时间效率O(N2); 初学C语言版本 #include void sort(int a[], int len) { int i, j, tmp; for (i = 0; i<len - 1; i++) { for (j = 0; j<len - i - 1; j++) {原创 2016-06-10 17:35:42 · 300 阅读 · 1 评论 -
选择排序
选择排序 #include void sort(int a[],int len) { int i,j,k; for(i=0;i<len-1;i++) { k=i; for(j=i+1;j<len;j++) { if(a[k]<a[j]) { k=j; } } if(k!=i) { int tmp=a[i]; a[i]=a[k];原创 2015-04-20 21:58:18 · 378 阅读 · 0 评论 -
直接插入排序
直接插入排序与希尔排序 希尔排序是直接插入排序的优化 直接插入排序思路:将一个数插入一个有序集合;最好时间效率O(N),最坏时间效率O(N2); 希尔排序思路:先进行预排序(与插入排序思路相同,就是gap开始大于1),预排序完将小值放在了前面,大值放在了后面;当gap=1时,进行插入排序;此时的插入排序就接近O(N); 代码如下: #include using n原创 2016-06-07 16:39:21 · 335 阅读 · 0 评论