快速排序用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++/Python/Java)排序C++PythonJava
- 人人都可以用C語言寫推箱子小遊戲C語言遊戲
- 歸併排序——C語言排序C語言
- 用C語言寫strcat、strcpy、strlen、strcmpC語言
- C語言版資料結構及演算法_快速排序C語言資料結構演算法排序
- C語言解決排序問題C語言排序
- 「趣圖」這是用 e 語言寫的 C++ 程式碼,客官請慢用C++
- 快速排序為什麼這麼快?排序
- C#語言————第二章 C#語言快速熱身C#
- 快速排序就這麼簡單排序
- C語言排序 冒泡 選擇 快排C語言排序
- c語言初學者氣泡排序C語言排序
- 排序演算法-C語言實現排序演算法C語言
- C語言-檔案讀寫C語言
- C語言可以用來開發那些專案呢?C語言
- 為什麼寫爬蟲用Python語言?爬蟲Python
- 用C語言編寫小遊戲——“井字棋”C語言遊戲
- C語言例題19:折半插入排序C語言排序
- C語言學習方法,怎麼學習C語言?C語言
- C語言 編寫線段樹C語言
- 快速排序C++排序C++
- C++語言菜鳥快速入門C++
- 【Go語言入門系列】(九)寫這些就是為了搞懂怎麼用介面Go
- 哦!這該死的 C 語言
- 真的可以,用C語言實現物件導向程式設計OOPC語言物件程式設計OOP
- 【C語言學習筆記】再論快速排序的重要性與妙用空間C語言筆記排序
- c#實現最簡快速排序,你絕對可以看懂C#排序
- C語言的角落——這些C語言不常用的特性你知道嗎?C語言
- 用 C 語言編寫多程式 Web 伺服器【粗暴版】Web伺服器
- C語言用三目運算實現判斷大寫C語言
- 新學一種c語言寫法C語言
- c語言實用小程式C語言
- C語言編寫作業系統有什麼好處C語言作業系統
- C語言應用領域及前景怎麼樣?C語言