折半插入排序

来源:互联网 发布:算法基础vb 编辑:程序博客网 时间:2024/06/03 18:58
#include<iostream>/**折半插入 -- 将数组分为有序区和无序区,将无序区第一个元素采用折半查找方法在有序区找到插入位置,再通过移动元素进行插入。**/int main() {int arr[5] = {5,4,3,2,1};void InsertSort2( int array[], int n );InsertSort2(arr,5);for( int i = 0; i < 5; i++ ) {std::cout<<arr[i]<<std::endl;}return 0;}void InsertSort2( int array[], int n ) {int i,j,left,right,mid;int tmp;for( i = 1; i < n; i++ ) {tmp = array[i];left = 0;right = i-1;while( left <= right ) {mid = (left+right)/2;    //找到中间位置if( tmp < array[mid] )right = mid-1;//插入点在左边elseleft = mid+1;//插入点在右边}for( j = i-1; j >= right + 1; j--)      //元素后移array[j+1] = array[j];array[right+1] = tmp;//插入}}

0 0
原创粉丝点击