#ifndef __QUIKSORT_H
#define __QUIKSORT_H
#include<stdlib.h>
typedef int T;
int One_Round_Sort(T* arr, int low, int high)
{
if( (arr == NULL) || (low > high) )
return -1;
int r = rand() % (high - low + 1) + low;
T key = arr[r];
arr[r] = arr[low];
arr[low] = key;
//
int small = low;
for( int idx = low + 1; idx <= high; ++idx)
{
if(arr[idx] < key)
{
++small;
if(small != idx)
{
//swap
T tmp = arr[idx];
arr[idx] = arr[small];
arr[small] = tmp;
}
}
}
arr[low] = arr[small];
arr[small] = key;
//
return small;
}
void Quik_Sort(T* arr, int low, int high)
{
if( (arr == NULL) || (low < 0) || (low >= high) )
return ;
int mid = One_Round_Sort(arr, low, high);
Quik_Sort(arr, low, mid - 1);
Quik_Sort(arr, mid + 1, high);
}
#endif
小程序(2)——随机快速排序
最新推荐文章于 2024-12-05 10:44:47 发布