Description算法
有n個無序的整數,試把它們從小到大排序。學習
要求:本題採用冒泡排序法來完成。且要對基本冒泡算法進行優化,方可AC本題。優化
輸入共有兩行,第一行是一個整數n ( 0 < n ≤ 100000 ),表示有n個整數。spa
第二行是n個整數。code
輸出每一趟冒泡排序的結果,一趟一行。blog
10
49 14 38 74 96 65 8 49 55 27排序
14 38 49 74 65 8 49 55 27 96
14 38 49 65 8 49 55 27 74 96
14 38 49 8 49 55 27 65 74 96
14 38 8 49 49 27 55 65 74 96
14 8 38 49 27 49 55 65 74 96
8 14 38 27 49 49 55 65 74 96
8 14 27 38 49 49 55 65 74 96
8 14 27 38 49 49 55 65 74 96ip
本題須要對冒泡法作幾個優化。因此,提交以前應該上網搜索資料學習如何優化冒泡排序。it
#include<stdio.h>
void bubbleSort(int arr[],int n){
int nn = n; int last = n; //last記錄最後發生交換的位置 for(int i=0;i< n ;i++){ int flag = 0; for(int j=0;j<n-1-i;j++){ if(arr[j]>arr[j+1]){ last = j; flag=1; int tmp = arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } for(int i=0;i<n;i++){ printf("%d",arr[i]); if(i==n-1)printf("\n"); else printf(" "); } if(flag==0||(flag==1&&last==0)){ break; } } } int main(){ int n;int arr[100010]; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&arr[i]); } bubbleSort(arr,n); }