zoukankan      html  css  js  c++  java
  • 数据结构之 排序---折半插入排序(时间复杂度 O(nlog2 n) )

    排序

    Time Limit: 1000MS Memory limit: 32678K

    题目描述

        给你N(N<=100)个数,请你按照从小到大的顺序输出。

    输入

        输入数据第一行是一个正整数N,第二行有N个整数。

    输出

        输出一行,从小到大输出这N个数,中间用空格隔开。

    示例输入

    5
    1 4 3 2 5

    示例输出

    1 2 3 4 5

    #include <math.h>
    #include <string.h>
    #include <stdio.h>
    #include <iostream>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    //折半插入排序
    void B_insertsort(int a[], int n)
    {
        int i, j;
        int mid, low, high;
    
        for(i=2; i<=n; i++)
        {
            a[0]=a[i];  //a[0] 只是我写的这个算法模板的“中转站”,实际数据存在下标: 1--->n 里面
            low=1; high=i-1;
            while(low <= high)
            {
                mid = (low+high)/2;
                if(a[0]>a[mid])  // 此语句将决定是“由大到小” 还是 “由小到大”排序的顺序!
                    low=mid+1;
                else
                    high=mid-1;
            }
            for(j=i-1; j>=high+1; j--)
            {
                a[j+1]=a[j];
            }
            a[high+1]=a[0];
        }
    }
    
    int main()
    {
        int a[200];
        int i, j;
        int n;
        while(~scanf("%d", &n))
        {
            for(i=1; i<=n; i++)
            {
                cin>>a[i];
            }
            B_insertsort(a, n);
    
            for(j=1; j<=n; j++)
            {
                if(j==1)
                    cout<<a[j];
                else
                    cout<<" "<<a[j];
            }
            cout<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    005 HTML+CSS(Class027
    004 HTML+CSS(Class024
    003 HTML+CSS(Class011
    002HTML+CSS(class007-010)
    001HTML+CSS(class001-006)
    021 vue路由vue-router
    020 Vue 脚手架CLI的使用
    019 Vue webpack的使用
    018 vue的watch属性
    017 vue的插槽的使用
  • 原文地址:https://www.cnblogs.com/yspworld/p/4102502.html
Copyright © 2011-2022 走看看