zoukankan      html  css  js  c++  java
  • 折半插入排序算法的C++实现

    折半插入排序思想和直接插入排序类似。

    1)找到插入位置;

    2)依次后移正确位置后面的元素。

    区别是查找插入位置的方法不同。

    折半插入排序使用的折半查找法在一个已经有序的序列中找到查找位置。

    注意,折半查找法的一个基本条件就是序列已经有序

    直接上代码:

    #include<iostream>
    using namespace std;
    
    void binaryInsertionSort(int arr[],int n){
    
        int mid;
        for(int i=1;i<n;i++){
            int low=0,high=i-1;//将要插入的元素复制出来
            int temp=arr[i];
            //当low>high时,证明折半查找结束
            while(low<=high){
                mid=(low+high)/2;
                //每次和折半查到的元素比较大小
                //当待插入元素比折半查到的元素小时,那么正确插入位置在低半区;否则在高半区
                if(arr[i]<arr[mid])
                    high=mid-1;
                else
                    low=mid+1;
        }
            //由折半查找到的正确插入位置为high+1
            //将high+1后面的元素依次后移
            for(int j=i-1;j>=high+1;j--)
                arr[j+1]=arr[j];
            //在正确位置插入复制出来的待插入元素
            arr[high+1]=temp;
        }
        
    }
    
    int main(){
    
        int a[10]={10,9,8,7,6,5,4,3,2,1};
        binaryInsertionSort(a,10);
        for(int i=0;i<10;i++){
            cout<<a[i]<<" ";
        }
        cout<<endl;
        return 0;
    
    }
  • 相关阅读:
    常见常用的CSS
    Js删除数组函数
    使用CSS让多出来的字变为省略号
    CSS缩写的样式
    mac下安装nginx
    ubuntu下程序员常用命令大全
    vue.js实现瀑布流之vue-waterfall-easy
    vue.js常见的报错信息及其解决方法的记录
    laravel5.4生成验证码
    java算法之超级丑数
  • 原文地址:https://www.cnblogs.com/dudududu/p/8516088.html
Copyright © 2011-2022 走看看