首页 > 代码库 > 二分插入排序
二分插入排序
#include<iostream>using namespace std;int findIndex(char * v,char key,int index){ int m,left,right; left=0; right=index; while(1) { m=(right-left)/2; if(key<*(v+left)) { return left; } else if(key>*(v+right)) { return right; } else { if(m==0) { return left+1; } if(key==*(v+left+m)) { return left+m; } else if(key > *(v+left+m) ) { left=left+m; } else { right=left+m; } } } return -1;}int shortInsertTest2(int c, char * v){ int p,i,j; char temp; if(c<2) { return 0; } for(p=1;p<c;p++) { int i=findIndex(v,*(v+p),p); temp=*(v+p); for(j=p;j>i;j--) { *(v+j)=*(v+j-1); } *(v+i)=temp; } }
二分插入排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。