快速排序用C語言可以這麼寫
快速排序用C語言可以這麼寫
#include <stdio.h>
#include <stdlib.h>
/**
* 將nums中的資料,進行快速排序
* @param nums 待排序的陣列
* @param start 陣列中待排序序列的起始位置
* @param end 陣列中待排序序列的終止位置
*/
void fastSort(int *nums, int start, int end) {
if (start >= end)
return; // 如果只有一個資料元素,那麼就不需要進行排序了
// 記錄當前nums待排序序列的第一個資料元素,每次以第一個資料元素作為快速排序的樞紐元素
// 所謂樞紐元素,就是讓該元素成為,其左邊都比它小,右邊都比它大
int tmp = nums[start];
int s = start;
int e = end;
// 當s==e時就是tmp要放入的位置
while (s < e) {
// 從右邊開始遍歷,一旦發現右邊某一個元素比tmp小,就需要將它調到左邊
while (s < e && nums[e] >= tmp)
e--;
// 將右邊元素調到左邊
if (s < e)
nums[s++] = nums[e];
// 接著看左邊,一旦發現左邊一個元素比tmp大,那麼需要將其調到右邊
while (s < e && nums[s] <= tmp)
s++;
// 將元素調到右邊
if (s < e)
nums[e--] = nums[s];
}
// 將樞紐元素歸位
nums[e] = tmp;
// 遞迴處理左邊
fastSort(nums, start, e);
// 遞迴處理右邊
fastSort(nums, s + 1, end);
}
int main(void) {
int nums[100];
for (int i = 0; i < 10; i++) {
scanf("%d", nums + i);
}
fastSort(nums, 3, 8);
for (int i = 0; i < 10; i++) {
printf("%d\t", nums[i]);
}
printf("\n");
return 0;
}
相關文章
- 【C語言】氣泡排序與快速排序C語言排序
- c語言快速排序(庫函式使用)C語言排序函式
- 用Java語言寫氣泡排序Java排序
- 快速排序演算法(C語言實現)排序演算法C語言
- C語言C++學到什麼程度可以寫遊戲輔助?C語言C++遊戲
- nlssort可以用來進行語言排序排序
- 人人都可以用C語言寫推箱子小遊戲C語言遊戲
- 歸併排序——C語言排序C語言
- 三種語言實現快速排序(C++/Python/Java)排序C++PythonJava
- 現代程式語言用什麼語言寫成?
- 用C語言寫strcat、strcpy、strlen、strcmpC語言
- 快速排序為什麼這麼快?排序
- C語言版資料結構及演算法_快速排序C語言資料結構演算法排序
- C語言 連結串列排序C語言排序
- 快速排序就這麼簡單排序
- 用C++語言寫遊戲——蟲戰世界C++遊戲
- 用C++語言寫遊戲——打怪小遊戲C++遊戲
- 用C語言寫的程式不安全C語言
- 用C語言編寫windows服務程式C語言Windows
- 資料結構之---C語言實現快速排序(多個版本)資料結構C語言排序
- 「趣圖」這是用 e 語言寫的 C++ 程式碼,客官請慢用C++
- 用c#進行快速排序C#排序
- c語言初學者氣泡排序C語言排序
- C語言解決排序問題C語言排序
- 用C語言編寫小遊戲——“井字棋”C語言遊戲
- 用C語言編寫的公式計算器C語言公式
- C#語言————第二章 C#語言快速熱身C#
- 為什麼這麼多人學不會C語言呢?C語言
- C語言可以用來開發那些專案呢?C語言
- 對c語言系統庫函式、堆排序、希爾排序、折半插入排序、快速排序消耗時間的比較C語言函式排序
- C語言中如何寫斷言C語言
- C語言-檔案讀寫C語言
- 排序演算法-C語言實現排序演算法C語言
- C語言排序 冒泡 選擇 快排C語言排序
- 用 C 語言寫面向的物件是一種什麼樣的體驗物件
- 用C語言寫面向的物件是一種什麼樣的體驗C語言物件
- 為什麼寫爬蟲用Python語言?爬蟲Python
- 【Go語言入門系列】(九)寫這些就是為了搞懂怎麼用介面Go