首页 > 代码库 > 排序:折半插入排序(时间复杂度 O(nlog2 n) )
排序:折半插入排序(时间复杂度 O(nlog2 n) )
排序
Time Limit: 1000MS Memory limit: 32678K
题目描述
给你N(N<=100)个数,请你按照从小到大的顺序输出。
输入
输入数据第一行是一个正整数N,第二行有N个整数。
输出
输出一行,从小到大输出这N个数,中间用空格隔开。
示例输入
51 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]; 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;}
排序:折半插入排序(时间复杂度 O(nlog2 n) )
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。