C語言day07-11冒泡排序

pragma mark 冒泡排序

pragma mark 概念

/*
 #pragma 冒泡排序
 特點:
 是用相鄰的兩個元素進行比較,每完全比較完一次,最值出現在末尾  // 第一次得到最大的值
 // 每次都是從0開始
 
 規律:
 比較次數
 ****
 ***
 **
 *
 
 */

pragma mark 代碼

#include <stdio.h>
int main()
{

#pragma mark  已知一個無序的數組,里面有5個元素,要求對數組進行排序

    int nums[5] = {99,12,88,11,22};
    
#pragma mark 選擇排序
    /*
     for (int i = 0; i < length - 1 ; i++) {
     for (int j = i; j< length - 1; j++) {
     //            printf("*");
     printf("i = %i, j = %i\n ",i ,j);             //選擇排序重點: 第一個數 和 所有的元素進行比較
     // 區別
     if (nums[i] > nums[j]) {
     int temp = nums[i];
     nums[i] = nums[j];
     nums[j] = temp;
     }
     }
     //        printf("\n");
     }
     
     */
#pragma mark 排序前
    // 動態獲取數量
    int length = sizeof(nums)/sizeof(nums[0]);
    for (int i = 0; i < length; i++) {
        printf("nums[%i] = %i\n",i, nums[i]);
    }
#pragma mark 冒泡排序
    for (int i = 0; i < length - 1; i++)
    {
        for (int j = 0; j < length - 1 - i; j++) {
//            printf("*");
            // 獲取相鄰索引
            printf("%i == %i \n",j,j+1);    // 冒泡排序重點 : 每相鄰數進行比較
            // 區別
            if (nums[j]>nums[j+1]) {
                // 第三變量 保存第一個變量先
                int temp = nums[j];
                // 將 第二個數 賦值給 第一個數
                nums[j] = nums[j+1];
                // 再講 第三變量 賦值給 第二個數
                nums[j+1] = temp;
            }
        }
#pragma mark  之前學習的
        /*
         for (int j = i; j < 4; j++) {
         //            printf("*");
         // 獲取相鄰索引
         printf("%i == %i \n",j,j+1);
         }
         */
//        printf("\n");
    }
    
    printf("-------------\n");
    
#pragma mark 排序后
    // 動態獲取數量
    for (int i = 0; i < length; i++) {
        printf("nums[%i] = %i\n",i, nums[i]);
    }
    return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容