快速排序理解

2021-08-18 13:07:31 字數 647 閱讀 2632

#include #include "stdafx.h"

#define n 7

void print2(int *a)

printf("\n");

}void sort(int *data, int left, int right)

int i = left;

int j = right;

int key = data[i];

while (i < j) //左邊和右邊的檢測沒有碰面

data[i] = data[j]; //取出來填舊坑,形成新坑

while (i < j && data[i] < key) //從左邊取乙個蘿蔔形成坑

data[j] = data[i];

} data[i] = key; //此時 在i左邊的都比它小,i 右邊的都比它大

sort(data, left, i - 1); //遞迴呼叫讓左邊和右邊的再次進行排序

sort(data, i + 1, right);

}int main()

; sort(a, 0, n - 1);

print2(a);

}

快速排序理解

每次處理好 某個 標桿 數字 在 最終 陣列 中的位置。然後 每個 數字 依次 作為標桿數,都找到 自己的 位置。相比 氣泡排序,冒泡 是每次找 最大數字的 位置,找好後 在 不包含最大 數字的 陣列中,再 次找 當前最大數的 位置。而快速 排序 是 找 指定 標桿數 的位置。標桿數 可以是任意乙個...

理解 氣泡排序 快速排序

練習 second text hao long 片.建立乙個結構體,用來儲存姓名和分數 typedef student student intmain for int i 0 i num 1 i for int i 0 i num i getchar getchar 用來暫停程式,以便檢視程式輸出的...

快速排序的理解

快速排序是對氣泡排序的一種改進。它的基本思想是通過一趟掃瞄後,使得排序序列的長度能大幅度地減少。通過一趟掃瞄,確保以某個數為基準點的左邊各數都比它小,右邊各數都比它大。然後又用同樣的方法處理它左右兩邊的數,直到基準點的左右只有乙個元素為止。簡單的說就是 找乙個基準數 待排序的任意數,一般都是選定首元...