二分插入排序和二分查找

来源:互联网 发布:yoo桌面软件 编辑:程序博客网 时间:2024/05/16 11:19

1.二分插入排序

二分插入排序其实是直接插入排序的改进,在前面已排好的队列中,以二分查找的形式插入待排序数据

2.二分查找

在有序序列中查找值是否存在,是将序列不断分成两部分进行查找


下面直接贴代码:

#include <iostream>//二分插入排序void BInsertSort(int *a,int c){for(int i=1;i<c;i++){int key=a[i];int left=0,right=i-1;while(left<=right){int middle=(left+right)/2;if(key>a[middle])left=middle+1;elseright=middle-1;}//此时left所在位置为要插入的位置for(int j=i;j>left;j--)a[j]=a[j-1];a[left]=key;}}//二分查找int BSearch(int *a,int tar,int length){int left=0,right=length-1,middle;while(left<=right){middle=(left+right)/2;if(tar>a[middle])left=middle+1;else if(tar<a[middle])right=middle-1;elsereturn middle;}return -1;}int main(){int a[10]={9,4,10,5,8,7,3,6,1,2};int c=10;BInsertSort(a,c);for(int i=0;i<c;i++){printf("%d\n",a[i]);}int b=BSearch(a,9,c);printf("%d\n",b);return 0;}


0 0
原创粉丝点击