插入排序(折半插入)
2015-09-29 02:11
417 查看
插入排序:O(n^2)
思路:将排序数组逻辑上分为两部分,一部分已经拍好续的(哪怕就一个数,或者没有),其余的为另一部分(未排序),读取未排序的部分,将值插入到已经排序过的序列的对应位置。
ubuntu14.04,vim,gcc
思路:将排序数组逻辑上分为两部分,一部分已经拍好续的(哪怕就一个数,或者没有),其余的为另一部分(未排序),读取未排序的部分,将值插入到已经排序过的序列的对应位置。
#include <stdio.h> #include <stdlib.h> #include <malloc.h> void genrand(int num,long * array){ if(num<0 || num >100) return; srand((unsigned int)time(0)); while(num--) array[num] = rand(); } void halfInsertSort(long * array,int length){ if(array==NULL || length<=0) return; int i,j,tmp; for(i=1;i<length;i++){ tmp = array[i]; int low = 0; int hight = i-1; while(low<=hight){ int mid = (low+hight)/2; if(array[mid] > tmp) hight = mid-1; else low = mid+1; } for(j=i-1;j>=low;j--){ array[j+1] = array[j]; } array[low] = tmp; } } int main(int argc,char * argv){ int num = 10; long * array = (long *)malloc(sizeof(long)*num); genrand(num,array); halfInsertSort(array,num); while(num--) printf("%ld\n",array[num]); return 0; }
ubuntu14.04,vim,gcc
相关文章推荐
- 用python做了一个 qq炫舞 机器人
- libgdx API之AI:AI让游戏对象思考
- Unity优化技巧提到的3篇翻墙文章之Unity 4.3 關於 Occlusion Culling : 錯誤診斷
- 京城码帮——不做单纯的程序员,第二次聚会总结
- 选择排序(直接选择)
- dojo/dom-construct.toDom方法学习笔记
- webwork+spring+hibernate进行数据增删查改操作时出现NullPointerException异常
- Linux系统管理之LVM逻辑卷管理
- 数据存储
- Finder增强插件XtraFinder
- Unity优化技巧提到的3篇翻墙文章之Unity 4.3 關於 Occlusion Culling : 最佳做法
- Unity优化技巧提到的3篇翻墙文章之Unity 4.3 關於 Occlusion Culling : 基本篇
- 使用bitbucket时遇到Permission denied (publickey)的解决方法
- Unity优化技巧
- Redis安装和使用记录
- appStore提交审核遇到 ITMS-90535 错误
- 新安装VMM 2012 R2控制台可能遇到的问题
- Android强制下线功能
- 经济--指数基金--腾安百发容易宝,BAT大战指数基金
- leetcode 027 Remove Element(难易度:Easy)