zoukankan      html  css  js  c++  java
  • 二分插入排序

    二分插入排序的基本思想是:利用二分搜索算法,在已有序序列中查找元素插入位置,将元素插入这个位置,这个位置后面的元素依次后移。

    //
    //  BinaryInsertSort.c
    //  libin
    //
    //  Created by 李宾 on 16/4/28.
    //  Copyright © 2016年 李宾. All rights reserved.
    //
    
    #include <stdio.h>
    void BinaryInsertSort(int *p, int len)
    {
        for (int i = 1; i < len; i ++) {
            if(p[i] > p[i-1])
            {
                continue;
            }
            int low = 0;
            int high = i - 1;
            int mid = 0;
            int temp = p[i];
            while (low <= high)
            {
                mid = (low + high)/2;
                if (temp < p[mid]) {
                    high = mid - 1;
                }
                else
                    low = mid + 1;       //low的位置就是插入的位置
            }
            //low到i的元素都要后移
            for(int j = i - 1; j >= low; j --)
            {
                p[j+1] = p[j];
            }
            
            p[low] = temp;
        }
    }
    
    int main()
    {
        int a[6] = { 4, 1, 3, 15, 6, 40};
        BinaryInsertSort(a, 6);
        for (int i = 0; i < 6; i ++) {
            printf("%d	", a[i]);
        }
            printf("
    ");
    }
  • 相关阅读:
    Permutations II
    Add Binary
    Integer to Roman
    Roman to Integer
    Word Break
    完整记录一则Oracle 11.2.0.4单实例打PSU补丁的过程
    SQL Tuning 基础概述06
    SQL Tuning 基础概述05
    SQL Tuning 基础概述04
    SQL Tuning 基础概述03
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5444588.html
Copyright © 2011-2022 走看看