Home 数据结构及算法 快速排序
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

#define DATATYPE int
#define MAX 100000

void QuickSort(DATATYPE *Array,int len)
{
    int i,j,k;

    if(len<=1) return;

    i=rand()%len;
    k=Array[0];
    Array[0]=Array[i];
    Array[i]=k;

    k=Array[0];
    for(i=0,j=len-1; j>=i; j--)
    {
        if(i==j)
        {
            Array[i]=k;
            goto skip;
        }
        if(Array[j]<k)
        {
            Array[i]=Array[j];
            for(i++; i<=j; i++)
            {
                if(i==j)
                {
                    Array[i]=k;
                    goto skip;
                }
                if(Array[i]>k)
                {
                    Array[j]=Array[i];
                    break;
                }
            }
        }
    }
skip:
    if(i>1)
        QuickSort(Array,i+1);
    if(i<len-1)
        QuickSort(&Array[i+1],len-i-1);

    return;
}

void BubblingSort(DATATYPE *Array,int len)
{
    int i,j,temp;

    for(i=0; i<len-1; i++)
        for(j=i; j<len; j++)
            if(Array[i]>Array[j])
            {
                temp=Array[i];
                Array[i]=Array[j];
                Array[j]=temp;
            }

    return;
}

int main()
{
    int i;
    DATATYPE *array=NULL;

    if((array=(DATATYPE *)malloc(sizeof(DATATYPE)*MAX))==NULL)
    {
        printf("malloc error.\n");
        return -1;
    }

    srand(time(NULL));
    for(i=0; i<MAX; i++)
        array[i]=rand();
    printf("快速排序:\n");
    QuickSort(array,MAX);
    printf("排序完成\n");
    _getch();
    printf("\n\n冒泡排序:\n");
    BubblingSort(array,MAX);
    printf("排序完成\n");
    //  for(i=0; i<MAX; i++)
    //    printf("%d ",array[i]);
    _getch();
    return 0;
}

打赏
0 comment

You may also like

Leave a Comment

*

code

error: Alert: Content is protected !!