£¨4£© ¿ìËÙÅÅÐò
ÅÅÐòÔÚ¸÷ÖÖ³¡ºÏ¾³£±»Óõ½¡£
¿ìËÙÅÅÐòÊÇÊ®·Ö³£ÓõĸßЧÂʵÄËã·¨¡£
Æä˼ÏëÊÇ£ºÏÈѡһ¸ö¡°±ê³ß¡±£¬ ÓÃËü°ÑÕû¸ö¶ÓÁйýÒ»±éɸ×Ó£¬
ÒÔ±£Ö¤£ºÆä×ó±ßµÄÔªËØ¶¼²»´óÓÚËü£¬ÆäÓұߵÄÔªËØ¶¼²»Ð¡ÓÚËü¡£
ÕâÑù£¬ÅÅÐòÎÊÌâ¾Í±»·Ö¸îΪÁ½¸ö×ÓÇø¼ä¡£ ÔÙ·Ö±ð¶Ô×ÓÇø¼äÅÅÐò¾Í¿ÉÒÔÁË¡£
ÕâÑù£¬ÅÅÐòÎÊÌâ¾Í±»·Ö¸îΪÁ½¸ö×ÓÇø¼ä¡£ ÔÙ·Ö±ð¶Ô×ÓÇø¼äÅÅÐò¾Í¿ÉÒÔÁË¡£
ÏÂÃæµÄ´úÂëÊÇÒ»ÖÖʵÏÖ£¬Çë·ÖÎö²¢Ìîд»®Ïß²¿·ÖȱÉٵĴúÂë¡£
#include
void swap(int a[], int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; }
int partition(int a[], int p, int r) { int i = p; int j = r + 1; int x = a[p]; while(1) { while(i
void quicksort(int a[], int p, int r) { if(p int main() { int i; int a[] = {5,13,6,24,2,8,19,27,6,12,1,17}; int N = 12; quicksort(a, 0, N-1); for(i=0; i Ìâ½â£º¿ìËÙÅÅÐò¡£ÕâÀïÊǵ¥²½¿ìÅÅ¡£¾ÍÊǽ«Ò»¶ÑÊý°´ÕÕij¸öÊý×÷Ϊ»ù×¼Êý·Ö³É×óÓÒÁ½¶Ñ swap(a,p,j)£¬ÒòΪÕâʱºòµÄjÊÇÒѾ²»´óÓÚÁËxµÄ£¬pÕâ¸öλÖÃÒª·Å¸ÃÇø¼äµÄ×îСֵ£¬jÂú×㣬»»¹ýÈ¥¡£ £¨5£© ³éÇ© XÐÇÇòÒªÅɳöÒ»¸ö5ÈË×é³ÉµÄ¹Û²ìÍÅǰÍùWÐÇ¡£ ÆäÖУº A¹ú×î¶à¿ÉÒÔÅɳö4ÈË¡£ B¹ú×î¶à¿ÉÒÔÅɳö2ÈË¡£ C¹ú×î¶à¿ÉÒÔÅɳö2ÈË¡£ .... ÄÇô×îÖÕÅÉÍùWÐǵĹ۲ìÍÅ»áÓжàÉÙÖÖ¹ú±ðµÄ²»Í¬×éºÏÄØ£¿ ÏÂÃæµÄ³ÌÐò½â¾öÁËÕâ¸öÎÊÌâ¡£ Êý×éa[] ÖмÈÊÇÿ¸ö¹ú¼Ò¿ÉÒÔÅɳöµÄ×î¶àµÄÃû¶î¡£ ³ÌÐòÖ´Ðнá¹ûΪ£º DEFFF CEFFF CDFFF CDEFF CCFFF CCEFF CCDFF CCDEF BEFFF BDFFF BDEFF BCFFF BCEFF BCDFF BCDEF .... (ÒÔÏÂÊ¡ÂÔ£¬×ܹ²101ÐÐ) #include #define BUF 1024 void f(int a[], int k, int m, char b[]) { int i,j; if(k==N) { b[M] = 0; if(m==0) printf(\ return; } for(i=0; i<=a[k]; i++) { for(j=0; j int main() { int a[N] = {4,2,2,1,1,3}; char b[BUF]; f(a,0,M,b); return 0; } ×ÐϸÔĶÁ´úÂ룬Ìîд»®Ïß²¿·ÖȱÉÙµÄÄÚÈÝ¡£ ×¢Ò⣺²»ÒªÌîдÈκÎÒÑÓÐÄÚÈÝ»ò˵Ã÷ÐÔÎÄ×Ö¡£ Ìâ½â£º Õâ¸öÌâÄ¿ÊÇÕâÑùµÄ£¬¶ÔÓÚf(int a[],int k,int m,char b[])¡£ a[] ÊÇÿ¸ö¹ú¼ÒµÄ×î¶àÖ¸ÅÉÈËÊý,k±íʾµ±Ç°ÊÇÄĸö¹ú¼Ò,m±íʾ»¹ÐèÒªÅÉËͼ¸¸öÈË(¿ÉÒÔΪ¸ºÊý).b±íʾÒѾÅÉË͵ÄÈ˵Ä×Ö·û´®¡£ ËùÒÔÕâ¸öÌâÄ¿ÔڵݹéÖмäµÄµÄ µÚÒ»¸öÑ»·±íʾ´Ó0~a[i]ÖÐÈÃi¹úÑ¡ÔñÖ¸ÅÉÈËÊý£¬ÄÚÑ»·Ö»ÊÇÏòb[]¼Ç¼µÄ¹ý³Ì¡£ ËùÒÔ´ð°¸ÊÇf(a,k+1,m-i,b). ÒòΪÕâÀïi = j .Ó¦¸Ã f(a,k+1,m-j,b)Ò²¿ÉÒÔ¡£