1. 程式人生 > 其它 >122. 買賣股票的最佳時機 II&&738. 單調遞增的數字

122. 買賣股票的最佳時機 II&&738. 單調遞增的數字

技術標籤:C語言資料結構與演算法排序演算法快速排序

快速排序-比較交換類排序
演算法複雜度:最好=O(nlog n) 最差=O(n2) 平均=O(nlog n)
演算法穩定性:不穩定
演算法思想:分而治之

#include <stdio.h>

void print_array(int *a, int len) {
    for (int i = 0; i < len; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");
}

int getIndex(int *
a, int l, int r) { int tmp = a[l]; //基準資料 while (l < r) { while (l < r && a[r] >= tmp ) { //當隊尾元素大於等於基準資料時,向前挪動指標 r--; } a[l] = a[r]; //如果隊尾元素小於tmp,則賦值給l while (l < r && a[l] < tmp) { //當隊首元素小於基準元素,向後移動指標 l++; }
a[r] = a[l]; //隊首元素大於tmp,則賦值給r } a[l] = tmp; return l; } void quickSort( int *a, int l, int r ) { if ( l < r ) { int i = getIndex(a, l, r); quickSort(a, l, i-1); //左分治 quickSort(a, i+1, r); //右分治 } } int main() { int a[7] = {1, 4, 2, 5, 6, 0, 9
}; print_array(a, 7); quickSort(a, 0, 6); print_array(a, 7); } /** 執行過程 1 4 2 5 6 0 9 0 1 2 4 5 6 9 */