在將字串陣列排序時,根據首字母進行三向切分,然後(遞迴地)將得到的三個子陣列排序:乙個含有所有首字母小於切分字元的字串子陣列,乙個含有所有首字母等於切分字元的字串的子陣列(排序時忽略它們的首字母),乙個含有所有首字母大於切分字元的字串的子陣列。**實現
#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...