#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DATA_SIZE 10 // 内存元素的个数
#define RAND_NUM_RANGE 1000 // 随机数的获取范围
int QUICK_SORT_Rand(int size)
{
// 1、判断传进来的范围值,是否超出范围
if(size > 32767)
return -1;
// 2、返回随机数
return rand()%(size+1);
}
void QUICK_SORT(int data_p[], int len)
{
if(len <= 1)
return;
int left = 0;
int right = len - 1;
int base = data_p[left]; // 基准元素
while(left < right)
{
while ((base < data_p[right]) && (left < right))
{
right--;
}
if(base > data_p[right])
{
data_p[left] = data_p[right];
left++;
}
while((base > data_p[left]) && (left < right))
{
left++;
}
if(base < data_p[left])
{
data_p[right] = data_p[left];
right--;
}
}
data_p[left] = base;
QUICK_SORT(data_p, left); // 左序
QUICK_SORT(data_p + left + 1, len - 1 - left); // 右序
}
int main()
{
// 因为是伪随机,所以需要有一个随时变化的种子(时间)
srand(time(NULL));
int data_buf[DATA_SIZE] = {0};
for (int i = 0; i < DATA_SIZE; i++)
{
data_buf[i] = QUICK_SORT_Rand(RAND_NUM_RANGE);
}
QUICK_SORT(data_buf, DATA_SIZE);
for(int i = 0; i < DATA_SIZE; i++)
{
printf("%d ", data_buf[i]);
}
return 0;
}
快速排序(简单版)
最新推荐文章于 2024-09-10 23:34:31 发布