利用C語言將混亂數字排序(即冒泡排序法)(含思路)

大一C語言 你沒學過嗎 這篇可以稱的上入門級別的c語言了 當然還有水仙花數,冒泡排序等經典的C語言程式 後面也會逐一更新 盡情期待喔~~~ 

冒泡排序法的基本思路為:每次將相鄰的兩個數比較,將小的調在前面。舉個例子,如果有6個數:9,8,5,4,2,0。第一次先將最前面的兩個數9和8對調。第二次將第2個數和第3個數對調(9和5)······如此共進行5次得到8,5,4,2,0,9的順序,可以看到:最大的數9已經沉到了最底下成為了最下面的一個數,而小的數「上升」。

然後進行第二輪比較,對餘下的5個數進行冒泡排序,然後這五個數中最大的數8沉到了最底下。如此6個數進行5趟排序,才能使6個數按大小順序排列。第一趟中要進行兩個數之間的比較共5次,第二趟中要比較4次······第五趟中比較一次。即如果有n個數,則要進行n-1趟比較,第一次比較中需要進行n-1次兩兩比較,第二趟需要進行n-2次,第j次需要進行n-j次兩兩比較。

N個數字要排序完成,總共進行N-1趟排序,每i趟的排序次數為(N-i)次,所以可以用雙重循環語句,外層控制循環多少趟,內層控制每一趟的循環次數.

Tip:

  1. 經實測輸入#define _CRT_SECURE_NO_WARNINGS 1  後scanf不用再改為scanf_s
  2. #define _CRT_SECURE_NO_WARNINGS 1    // 預編時處理一下,加個宏而已,讓其忽略安全檢測
  3.  int temp, i, j;         // i是數組下標,j是比較次數
#define _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>

int main() {
    int sort[6];
    int temp, i, j;      
    printf("請輸入6個數字:\n");
    
    for (i = 0; i < 6; i++)
    {
        scanf("%d", &sort[i]);
    }
    
    printf("\n");
    
    for (j = 0; j < 5; j++) 
    {                                       //6個數字總共排5趟
        for (i = 0; i < 5 - j; i++)        //每一趟交換5-j次
            if (sort[i] > sort[i + 1]) 
            {
                temp = sort[i];
                sort[i] = sort[i + 1];
                sort[i + 1] = temp;    //找出兩個數中最小的的交換
            }
    }
    printf("排序之後的:\n");
    for (i = 0; i < 6; i++)
        printf("%d", sort[i]);

    return 0;
}

 

運算結果如下:

有想看什麼程式的 可以評論喔~~~

阿婆主的粉絲少 肯定會回的啦

 

Tags: