1209.1——快速排序算法
#include <stdio.h>
?
void quickSort(int array[], int low, int high){
? ? int i = low; //從左到右
? ? int j = high; //從右邊到左
?? ?
? ? //保存參考值 第一個(gè)數(shù)作為參考值
? ? int temp = array[low];
?? ?
? ? if (low < high) {
? ? ? ? while (i < j) {
? ? ? ? ? ? //先從最右邊開始找到第一個(gè)比temp小的數(shù)
? ? ? ? ? ? while (i < j && array[j] >= temp) {
? ? ? ? ? ? ? ? j--;
? ? ? ? ? ? }
?? ? ? ? ? ?
? ? ? ? ? ? //找到第一個(gè)比temp小得數(shù)了。
? ? ? ? ? ? //交換
? ? ? ? ? ? array[i] = array[j];
?? ? ? ? ? ?
? ? ? ? ? ? //從左邊開始,找到第一個(gè)比temp大得數(shù)
? ? ? ? ? ? while (i < j && array[i] <= temp) {
? ? ? ? ? ? ? ? i++;
? ? ? ? ? ? }
?? ? ? ? ? ?
? ? ? ? ? ? //找到第一個(gè)比 temp大得數(shù)了。
? ? ? ? ? ? //交換
? ? ? ? ? ? array[j] = array[i];
? ? ? ? }
?? ? ? ?
? ? ? ? //找到臨界點(diǎn)的位置
? ? ? ? array[i] = temp;
?? ? ? ?
? ? ? ? //以i為基準(zhǔn),左邊的比temp小, 右邊的比temp大
? ? ? ? //對(duì)左邊進(jìn)行排序
? ? ? ? quickSort(array, 0, i-1);
?? ? ? ?
? ? ? ? //對(duì)右邊進(jìn)行排序
? ? ? ? quickSort(array, i+1, high);
? ? }
}
?
int main(int argc, const char * argv[]) {
? ? int array[] = {3,1,9,2,8,3,7,4};
?? ?
? ? quickSort(array, 0, 7);
?? ?
? ? for (int i = 0; i < 8; i++) {
? ? ? ? printf("%d ", array[i]);
? ? }
? ? printf("\n");
? ? return 0;
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/damonWq/p/5033031.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的1209.1——快速排序算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax 中文乱码问题 主要是IE浏览器
- 下一篇: 英语笔记-20151209