标签:blog io 使用 ar for sp div art on
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void quick_sort(int data[], int, int);
int partition(int data[], int, int);
int main( int argc, char* argv[] )
{
int data[8] = {2, 8, 7, 1, 3, 5, 6, 4};
quick_sort(data, 0, 7);
for (int i = 0; i < 8; i++)
{
printf("%d ", data[i]);
}
system("pause");
return 0;
}
void quick_sort(int data[], int low, int high)
{
if (low < high)
{
int p = partition(data, low, high);
quick_sort(data, low, p - 1);
quick_sort(data, p + 1, high);
}
}
int partition(int data[], int low, int high)
{
int i, j;
int r, temp;
r = data[high];//此处不可以使用data[low]。
i = low - 1;
for (j = low ; j < high; j++)
{
if (data[j] <= r) //此处使用“<=”,而不是“<”。其实,两种用法都对,但是推荐使用“<=”。
{
i++;
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
temp = data[high];
data[high] = data[i + 1];
data[i + 1] = temp;
return i + 1;
}
快速排序不是稳定的排序算法!例如,2, 3, 6, 61, 5, 4.使用上述算法后,结果是2, 3, 4, 5, 61, 6.
标签:blog io 使用 ar for sp div art on
原文地址:http://www.cnblogs.com/yyxayz/p/3995700.html