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

    #include"iostream"
    #include"time.h"
    using namespace std;
    void show(int *a,int N){
        for(int i = 0;i < N;i++){
            cout<< a[i]<<ends;
        }
        cout<<endl;
    }
    //直接插入排序
    void sort(int *a,int n){
        for(int i = 0;i < n;i++){        //依次取出i往前插入
            int temp = a[i];            //保存i
            for(int j = i - 1;j >= 0 && temp < a[j];j--){        //找到插入点j
                a[j + 1] = a[j];        //比i大的元素往后移,给i腾位置,直到j等于0或者i>j,则找到插入点
            }
            a[j + 1] = temp;            //将i插入腾出的位置
        }
    }
    //二分插入排序
    void sortbin(int *a,int n){
        for(int i = 0;i < n;i++){
            int temp = a[i];
            int low = 0,high = i - 1;
            while(low <= high){
                int mid = (low + high) / 2;
                if(a[mid] < temp){
                    low = mid + 1;
                }
                else{
                    high = mid - 1;
                }
            }
            //这里low或者high-1都为插入点
            for(int j = i - 1;j >= low;j--){
                a[j + 1] = a[j];
            }
            a[low] = temp;
        }
    }
    //希尔排序
    void shellsort(int *a,int n){
        for(int shell = n / 2;shell > 0 ;shell /= 2){
            //插入排序
            for(int i = shell;i < n;i++){
                int temp = a[i];
                for(int j = i - shell;j >= 0 && temp < a[j];j -= shell){
                    a[j + shell] = a[j];
                }
                a[j + shell] = temp;
            }
        }
    }
    
    int main(){
        srand(time(NULL));
        const int N = 10;
        int a[N];
        for(int i = 0;i < N;i++){
            a[i] = rand() % 10;
        }
        show(a,N);
        shellsort(a,N);
        show(a,N);
        return 0;
    }
  • 相关阅读:
    经典多线程问题(四)-轮流打印字母和数字
    经典多线程问题 (一)-多线程售票
    买卖股票的最佳时机 II
    最长递增(严格递增)子序列-可以不连续
    环形链表 II
    最小栈
    买卖股票的最佳时机
    二叉树的层序遍历
    字符串相加
    最大子序和
  • 原文地址:https://www.cnblogs.com/oleolema/p/9074807.html
Copyright © 2011-2022 走看看