PTA 冒泡排序


6-4 冒泡排序 (10 分)
 

編程實現冒泡排序函數。void bubbleSort(int arr[], int n);。其中arr存放待排序的數據,n為數組長度(1≤n≤1000)。

函數接口定義如下:

/* 對長度為n的數組arr執行冒泡排序 */
void bubbleSort(int arr[], int n);

請實現bubbleSort函數,使排序后的數據從小到大排列。

裁判測試程序樣例:

#include <stdio.h>

#define N 1000
int arr[N];

/* 對長度為n的數組arr執行冒泡排序 */
void bubbleSort(int arr[], int n);

/* 打印長度為n的數組arr */
void printArray(int arr[], int n);

void swap(int *xp, int *yp) {
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
}

int main() {
    int n, i;
    scanf("%d", &n);
    for (i = 0; i < n; ++i) {
        scanf("%d", &arr[i]);
    }
    bubbleSort(arr, n);
    printArray(arr, n);
    return 0;
}
/* 打印長度為n的數組arr */
void printArray(int arr[], int n) {
    int i;
    for (i = 0; i < n; i++) {
        printf("%d", arr[i]);
        if (i < n - 1)    /* 下標0..n-2每個元素后面有個空格 */
            printf(" ");   /*下標n-1,也就是最后一個元素后面沒有空格*/
    }
    printf("\n");  /* 一行打印完后換行 */
}

/* 你的代碼將嵌在這里 */

輸入樣例:

10
1 19 9 11 4 3 5 8 10 6

輸出樣例:

1 3 4 5 6 8 9 10 11 19

 1 void bubbleSort(int arr[], int n){
 2     int m=n-1,flag=1;
 3     while(m>0&&flag==1){
 4         flag=0;
 5         for(int j=0;j<m;j++){
 6             if(arr[j]>arr[j+1]){
 7                 flag=1;
 8                 int t=arr[j];
 9                 arr[j]=arr[j+1];
10                 arr[j+1]=t;
11             }
12         }
13         --m;
14     }    
15 }

方法2

 1 void bubbleSort(int arr[], int n){
 2     int i=n-1;
 3     while(i){
 4         int k=0;
 5         for(int j=0;j<i;j++){
 6             if(arr[j+1]<arr[j]){
 7                 int t=arr[j];
 8                 arr[j]=arr[j+1];
 9                 arr[j+1]=t;
10                 k=j;
11             }
12         }
13         i=k;
14     }
15 }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM