實現簡單排序
阿新 • • 發佈:2021-02-01
技術標籤:c語言
實現簡單排序
輸入:
程式輸入10個以空格分隔的整數(1~1000)
輸出:
輸出為一行,包括排序後的 1010 個輸入整數,每兩個整數之間有一個空格,最後一個整數後面沒有空格
(1) 氣泡排序
#include <stdio.h>
int main() {
int n = 10;
//int m;
int numbers[10];
int i;
int swapped=0;
int j;
// 讀入給定的數字
for (i = 0; i < n; i++) {
scanf("%d" , &numbers[i]);
}
//氣泡排序,第一輪比較只能確保最後的數字在正確的位置,所以需要n輪比較
for(j=0;j<n;j++){
for(i=0;i<n-1-j;i++){
if(numbers[i]<numbers[i+1]){
int temp;
temp=numbers[i];
numbers[i]=numbers[i+1];
numbers[i+1]=temp;
}
}
}
//輸出排序後的序列
for(j=0;j<n;j++){
printf("%d",numbers[j]);
if(j!=9){
printf(" ");
}
}
return 0;
}
(2) 選擇排序
#include <stdio.h>
int main() {
int n = 10;
int max;//記錄最大值
int numbers[ 10];
int i;
int temp=0;
int j;
// 讀入給定的數字
for (i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
for(i=0;i<n-1;i++)
{
max=i;
for(j=i+1;j<n;j++)
{
if(numbers[j]>numbers[max])
max=j; //這裡是區分氣泡排序與選擇排序
}
if(max!=j)
{
temp=numbers[i];
numbers[i]=numbers[max];
numbers[max]=temp;
}
}
for(j=0;j<n;j++){
printf("%d",numbers[j]);
if(j!=9){
printf(" ");
}
}
return 0;
}