BASIC-13 數列排序
阿新 • • 發佈:2019-01-09
題目
問題描述
給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200
輸入格式
第一行為一個整數n。
第二行包含n個整數,為待排序的數,每個整數的絕對值小於10000。
輸出格式
輸出一行,按從小到大的順序輸出排序後的數列。
樣例輸入
5
8 3 6 4 9
樣例輸出
3 4 6 8 9
解題一:
用系統內建快速排序;sort函式排序 再迴圈輸出
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
int n;
int a[200];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
題解二:
採用插入排序
#include<iostream> using namespace std; void Sort(int *a,int n) { //插入排序 int i,j,temp,k; for(i=1;i<n;i++) { temp =
a[i]; for(j=i-1;j>=0&&a[j]>temp;j--) { a[j+1] = a[j]; } a[j+1] = temp; } } int main() { int n,*a; cin>>n; a = new int[n]; for(int i=0;i<n;i++) { cin>>*(a+i); } Sort(a,n); for(int i=0;i<n;i++) { cout<<*(a+i)<<" "; } delete [] a; }
題解三:
採用氣泡排序
#include<stdio.h>
int main()
{
unsigned int n,i,j,t;
scanf("%d",&n);
int P[n];
for(i=0;i<=n-1;i++)
{
scanf("%d",&P[i]);
}
for(j=n;j>=1;j--)
{
for(i=0;i<j-1;i++)
if(P[i]>P[i+1])
{
t=P[i+1];
P[i+1]=P[i];
P[i]=t;
}
}
for(i=0;i<=n-1;i++)
{
printf("%d",P[i]);
printf(" ");
}
return 0;
}