JSK-133 氣泡排序【排序】
阿新 • • 發佈:2018-12-13
氣泡排序 氣泡排序是一種常見的排序演算法,本題要求用氣泡排序演算法對一組數字進行從小到大排序 輸入:輸入的是一行數字,就是我們需要排序的數字 輸出:輸出是從小到大排序好的數字,數字之間用空格分開 樣例輸入 2 1 5 8 21 12 樣例輸出 1 2 5 8 12 21
問題連結:JSK-133 氣泡排序 問題描述:(略) 問題分析: 氣泡排序雖然時間上不是好的演算法,但卻是廣為人知的演算法。 這個題坑人之處在於沒有說出資料的規模,暫時用1024試了一下,還好通過了。 排序函式bubbleSort()的程式碼是從參考連結中CV過來的,沒有修改。 程式說明: 還有一個坑,俺掉進去了。輸出的“數字之間用空格分開”這句話的含義是,最後一個數的後面沒有空格。最近寫簡單題,許多題這一點上不講究,習慣了,一不小心…,唉! 參考連結
AC的C語言程式如下:
/* JSK-133 氣泡排序 */
#include <stdio.h>
#define N 1024
int a[N];
void bubbleSort(int numbers[], int array_size)
{
int i, j, temp;
for (i = (array_size - 1); i > 0; i--)
for (j = 1; j <= i; j++)
if (numbers[j-1] > numbers[j]) {
temp = numbers[j - 1];
numbers[j - 1] = numbers[j];
numbers[j] = temp;
}
}
int main(void)
{
int n = 0, i;
// 讀入資料
while(scanf("%d", &a[n]) != EOF)
n++;
// 排序
bubbleSort(a, n);
// 輸出結果
for(i = 0; i < n; i++) {
if(i == 0)
printf ("%d", a[i]);
else
printf(" %d", a[i]);
}
printf("\n");
return 0;
}