给你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]; 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; }
原文:http://www.cnblogs.com/yspworld/p/4102502.html