C語言 三向字串快速排序

2021-08-20 19:04:25 字數 880 閱讀 8848

在將字串陣列排序時,根據首字母進行三向切分,然後(遞迴地)將得到的三個子陣列排序:乙個含有所有首字母小於切分字元的字串子陣列,乙個含有所有首字母等於切分字元的字串的子陣列(排序時忽略它們的首字母),乙個含有所有首字母大於切分字元的字串的子陣列。

**實現

#include 

#include

#include

#include

#define length 4

#define wordlength 3

#define charlength 256

void exchange(int *a, const

int i, const

int j)

void print(char *name[length])

}void _sort(char *name[length], int low, int high, int dk)

else

if (name[i][dk] > tmp)

}print(name);

_sort(name, low, lt - 1, dk);

if(tmp>0)

_sort(name, lt, gt, dk + 1);

_sort(name, gt + 1, high, dk);

}void quick3string(char *name[length])

void main() ;

quick3string(name);

}

三向切分的快速排序

在排序的實際應用中,經常會出現大量重複元素的陣列,比如生日排序。而在這種情況下,快速排序仍有巨大的改進空間,如 乙個元素重複的子陣列就不需要繼續排序了,但演算法卻仍會將它繼續切分為更小的陣列,三向切分的快速排序 正是基於此對 快速排序 的作出的改進。三向切分的快速排序將陣列切分為三部分,分別對應小於...

快速排序與三向切分的快速排序

快速排序 講解的十分生動形象 維護乙個指標lo,維護乙個指標hi,初始時lo指向陣列的第乙個元素,hi指向陣列的最後乙個元素。對於快速排序來說其核心有如下幾點 1.選取乙個元素 一般為陣列的第乙個元素 作為基準,可以生動的想象在基準元素上挖了乙個坑,把基準元素挖了出來,並移植給了臨時變數x 2.既然...

C語言字串 字串排序

本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串 red yellow blue green white after sorted b...