Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

¿ìËÙÅÅÐò(QuickSort)CÓïÑÔ°æ

¿ìËÙÅÅÐòµÄºËÐÄÔÚÓÚ·ÖÖÎ.
·ÖÖÎËã·¨:
1. È϶¨Ö»ÓÐÒ»¸öÔªËØ»òûÓÐÔªËØµÄÊý×éÊÇÓÐÐòµÄ.
2. ½«Êý×é°´ÕÕÒ»¸ö·Ö½çÖµ·ÖΪ×óÓÒÁ½²¿·Ö. ×óÃæËùÓÐÔªËØÖµ±È·Ö½çֵС, ÓÒÃæËùÓÐÔªËØÖµ±È·Ö½çÖµ´ó»òµÈÓÚ.
3. ½«×óÓÒÁ½²¿·Ö·Ö±ðÔÙ·ÖÖÎ, Ö±µ½Òª·ÖÖ§µÄ²¿·ÖÖ»ÓÐÒ»¸öÔªËØ»òûÓÐÔªËØ, ÄÇôÕû¸öÊý×é¾ÍÊÇÓÐÐòµÄÁË.
×÷Õß: selfimpr
²©¿Í: http://blog.csdn.net/lgg201
ÓÊÏä: lgg860911@yahoo.com.cn
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define LENGTH 500000
/*
* ´òÓ¡Ò»¸öÖ¸¶¨µÄÊý×é
*/
void printArray(int array[], int length);
/*
* ½«Ö¸¶¨Êý×éµÄÖ¸¶¨²¿·Ö·ÖÖÎ, ·µ»Ø·ÖÖεã.
* @argument division: ·Ö½çµã(ϱê)
* @argument left: ·ÖÖβ¿·ÖµÄ×óϱê
* @argument right: ·ÖÖβ¿·ÖµÄÓÒϱê
*/
int part(int array[], int division, int left, int right);
/*
* ÅÅÐòÖ¸¶¨Êý×éµÄÖ¸¶¨Î»ÖÃÔªËØ.
*/
void sort(int array[], int left, int right);
/*
* @author: selfimpr
* @blog: http://blog.csdn.net/lgg201
* @email: lgg860911@yahoo.com.cn
*/
int main() {
int array[LENGTH];
int i;
srand( (unsigned) time(NULL) );
for(i = 0; i < LENGTH; i ++) {
array[i] = rand() % LENGTH;
}
/*
* printArray(array, LENGTH);
* printf("\n\n");
*/
clock_t start = clock();
printf("Start at %d.\n", (unsigned)start);
sort(array, 0, LENGTH - 1);
clock_t end = clock();
printf("End at %d.\n", (unsigned)end);
/*
* printArray(array, LENGTH);
*/
printf("Sorted %d numbers in %d millisecond.", LENGTH, (unsigned)end - (unsigned)start);
return 0;
}
void printArray(int array[], int length) {
int i;
for(i = 0; i < length; i ++) {
printf("%d ", array[i]);
if((i + 1) % 10 == 0) {
printf("\n");
}
}
}
/*
* ·ÖÖÎËã·¨:
* ÒÔdivisionϱêµÄÔªËØÖµÎª·Ö½çµã, ½«Êý×é·Ö³É×óÓÒÁ½¸ö²¿·Ö.
* ·µ»Ø·Ö½çµãµÄϱê.
* ¹ý³Ì:
* 1. ±£Áô·Ö½çµãÔªËØµÄÖµ.
* 2. ÒÆ¶¯×óÖ¸Õë, Ö±µ½Ò»¸öÖµ²»Ð¡ÓÚ·Ö½çÖµ.
* 3. ÅжÏÊÇ·ñÒѾ­»®·ÖÁËËùÓÐÔªËØ, Èç¹ûÊÇ, Ìø³ö.
* 4. ½«×óÖ¸ÕëĿǰµÄÖµ¸´ÖƵ½divisionλÖÃ, Ö


Ïà¹ØÎĵµ£º

CÓïÑÔº¯Êý£¨Ò»£©


ÔÚÇ°ÃæÒѾ­½éÉܹý£¬£ÃÔ´³ÌÐòÊÇÓɺ¯Êý×é³ÉµÄ¡£ËäÈ»ÔÚÇ°Ãæ¸÷ÕµijÌÐòÖдó¶¼Ö»ÓÐÒ»¸öÖ÷º¯Êýmain()£¬µ«ÊµÓóÌÐòÍùÍùÓɶà¸öº¯Êý×é³É¡£º¯ÊýÊÇ£ÃÔ´³ÌÐòµÄ»ù±¾Ä£¿é£¬Í¨¹ý¶Ôº¯ÊýÄ£¿éµÄµ÷ÓÃʵÏÖÌØ¶¨µÄ¹¦ÄÜ¡££ÃÓïÑÔÖеĺ¯ÊýÏ൱ÓÚÆäËü¸ß¼¶ÓïÑÔµÄ×Ó³ÌÐò¡££ÃÓïÑÔ²»½öÌṩÁ˼«Îª·á¸»µÄ¿âº¯Êý(ÈçTurbo C£¬MS C¶¼ÌṩÁËÈý°Ù¶à¸ö¿âº¯Êý)£¬» ......

CÓïÑÔº¯Êý£¨¶þ£©

¡¾Àý8.6¡¿HanoiËþÎÊÌâ
    Ò»¿é°åÉÏÓÐÈý¸ùÕ룬A£¬B£¬C¡£AÕëÉÏÌ×ÓÐ64¸ö´óС²»µÈµÄÔ²ÅÌ£¬´óµÄÔÚÏ£¬Ð¡µÄÔÚÉÏ¡£Èçͼ5.4Ëùʾ¡£Òª°ÑÕâ64¸öÔ²ÅÌ´ÓAÕëÒÆ¶¯CÕëÉÏ£¬Ã¿´ÎÖ»ÄÜÒÆ¶¯Ò»¸öÔ²ÅÌ£¬Òƶ¯¿ÉÒÔ½èÖúBÕë½øÐС£µ«ÔÚÈκÎʱºò£¬ÈκÎÕëÉϵÄÔ²Å̶¼±ØÐë±£³Ö´óÅÌÔÚÏ£¬Ð¡ÅÌÔÚÉÏ¡£ÇóÒÆ¶¯µÄ²½Öè¡£
±¾ÌâËã·¨·ÖÎöÈçÏ£¬ÉèAÉÏ ......

CÓïÑÔÖ¸Õ루Èý£©

¡¾Àý10.21¡¿ÓÃÑ¡Ôñ·¨¶Ô10¸öÕûÊýÅÅÐò¡£
main()
{int *p,i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10;i++)
   printf("%d,",a[i]);
printf("\n");
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{printf("%d ",*p);p++;}
printf("\n");
}
sort(int x[],int n)
......

CÓïÑԽṹÌåÓë¹²ÓÃÌå

11.1 ¶¨ÒåÒ»¸ö½á¹¹µÄÒ»°ãÐÎʽ
    ÔÚʵ¼ÊÎÊÌâÖУ¬Ò»×éÊý¾ÝÍùÍù¾ßÓв»Í¬µÄÊý¾ÝÀàÐÍ¡£ÀýÈ磬ÔÚѧÉúµÇ¼Ç±íÖУ¬ÐÕÃûӦΪ×Ö·ûÐÍ£»Ñ§ºÅ¿ÉΪÕûÐÍ»ò×Ö·ûÐÍ£»ÄêÁäӦΪÕûÐÍ£»ÐÔ±ðӦΪ×Ö·ûÐÍ£»³É¼¨¿ÉΪÕûÐÍ»òʵÐÍ¡£ ÏÔÈ»²»ÄÜÓÃÒ»¸öÊý×éÀ´´æ·ÅÕâÒ»×éÊý¾Ý¡£ÒòΪÊý×éÖи÷ÔªËØµÄÀàÐͺͳ¤¶È¶¼±ØÐëÒ»Ö£¬ÒÔ±ãÓÚ±àÒëϵͳ´¦Àí¡ ......

CÓïÑÔλÔËËã

Ç°Ãæ½éÉܵĸ÷ÖÖÔËËã¶¼ÊÇÒÔ×Ö½Ú×÷Ϊ×î»ù±¾Î»½øÐеġ£ µ«Ôںܶàϵͳ³ÌÐòÖг£ÒªÇóÔÚλ(bit)Ò»¼¶½øÐÐÔËËã»ò´¦Àí¡££ÃÓïÑÔÌṩÁËλÔËËãµÄ¹¦ÄÜ£¬ÕâʹµÃ£ÃÓïÑÔÒ²ÄÜÏñ»ã±àÓïÑÔÒ»ÑùÓÃÀ´±àдϵͳ³ÌÐò¡£
12.1 λÔËËã·û£ÃÓïÑÔÌṩÁËÁùÖÖλÔËËã·û£º
    &          °´ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ