C語言 數組排序 – 快速法排序 - C語言零基礎入門教程


目錄

零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

一.簡介

經過前面的學習,我們已經學會了數組遍歷,在開發中,我們經常回碰到對數組進行排序,例如:學習成績排序,身高排序,年齡排序等等;C 語言中常見的數組排序一共有四種:

二.數組快速法排序原理

快速排序法號稱是目前最優秀的算法之一,實現思路是,將一個數組的排序問題看成是兩個小數組的排序問題,而每個小的數組又可以繼續看成更小的兩個數組,一直遞歸下去,直到數組長度大小最大為 2。

三.數組快速法排序實戰

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 數組排序 – 快速法排序
//@Time:2021/06/08 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

#include<stdlib.h>
#include<stdio.h>
//快速排序
void quickSort(int *arr, int l, int r)
{
    //此處編寫代碼實現快速排序
    int i, j, x, temp;
    if (l < r)
    {
        i = l;
        j = r;
        x = arr[(l + r) / 2];
        //以中間元素為軸
        while (1)
        {
            while (i <= r && arr[i] < x)
                i++;
            while (j >= 0 && arr[j] > x)
                j--;
            if (i >= j) //相遇則跳出
                break;
            else
            {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
                //交換
            }
        }
        quickSort(arr, l, i - 1); //對左半部分進行快排
        quickSort(arr, j + 1, r); //對右半部分進行快排
    }
}
void main()
{
    int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 10 };
    int len = sizeof(a) / sizeof(int);
    for (int i = 0; i < len; i++)
    {
        printf("排序之前:index:%d  value:%d\n", i, a[i]);
    }
    //快速法排序
    quickSort(a, 0, 9);
    printf("-----------------------------------\n");
    for (int i = 0;i<len;i++)
    {
        printf("排序之后:index:%d  value:%d\n", i, a[i]);
    }
    system("pause");
}

/*
輸出:

排序之前:index:0  value:9
排序之前:index:1  value:8
排序之前:index:2  value:7
排序之前:index:3  value:6
排序之前:index:4  value:5
排序之前:index:5  value:4
排序之前:index:6  value:3
排序之前:index:7  value:2
排序之前:index:8  value:1
排序之前:index:9  value:10
-----------------------------------
排序之后:index:0  value:1
排序之后:index:1  value:2
排序之后:index:2  value:3
排序之后:index:3  value:4
排序之后:index:4  value:5
排序之后:index:5  value:6
排序之后:index:6  value:7
排序之后:index:7  value:8
排序之后:index:8  value:9
排序之后:index:9  value:10
請按任意鍵繼續. . .
*/

四.猜你喜歡

  1. 安裝 Visual Studio
  2. 安裝 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸載
  4. Visual Studio 2003/2015 卸載
  5. C 語言格式控制符/占位符
  6. C 語言邏輯運算符
  7. C 語言三目運算符
  8. C 語言逗號表達式
  9. C 語言 for 循環
  10. C 語言 while 循環
  11. C 語言 do while 和 while 循環
  12. C 語言 switch 語句
  13. C 語言 goto 語句
  14. C 語言 char 字符串
  15. C 語言 sizeof 和 strlen 函數區別
  16. C 語言 strcpy 和 strcpy_s 函數區別
  17. C 語言 memcpy 和 memcpy_s 區別
  18. C 語言 數組定義和使用
  19. C 語言 數組遍歷
  20. C 語言 數組排序 – 冒泡法排序
  21. C 語言 數組排序 – 選擇法排序
  22. C 語言 數組排序 – 插入法排序
  23. C 語言 數組排序 – 快速法排序

未經允許不得轉載:猿說編程 » C 語言 數組排序 – 快速法排序

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

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



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