一、算法实现
快速排序的时间复杂度为O(n^2),但其通常是用于排序的最佳的使用选择,这是因为其平均性能相当好:期望的运行时间为O(nlgn)。其实现的算法如下:
int quick_sort(int *array, int low, int high)
{
int idx = 0;
if(low < high)
{
idx = partition(array, low, high);
quick_sort(array, low, idx-1);
quick_sort(array, idx+1, high);
}
return 0;
}
int partition(int *array, int low, int high)
{
array[0] = array[low]; /* array[0]作为临时交换空间 */
while(high > low)
{
while((array[high]>=array[0]) && (high>low)) { high--; }
array[low] = array[high];
left++;
while((array[low]<=array[0]) && (high>low)) { low++; }
array[high] = array[low];
right--;
}
array[low] = array[0];
return low;
}
二、函数调用
void print(int *array, int low, int high)
{
int idx = low;
char msg[1024] = {0}, str[128] = {0};
while(idx <= max)
{
sprintf(str, "array[%d]=%d ", idx, array[idx]);
strcat(msg, str);
idx++;
}
fprintf(stdout, "%s\n", msg);
}
int main(void)
{
int array[] = {-1, 9, 8, 7, 30, 5, 4, 3, -2, 1, 0};
quick_sort(array, 1, 10);
print(array, 1, 10);
return 0;
}
分享到:
相关推荐
C语言算法之归并排序C语言算法之归并排序C语言算法之归并排序C语言算法之归并排序
算法导论 源代码 C语言实现
c语言版本的数据结构的快速排序算法,适用于新手学习
算法导论版的快速排序的完整实现。C语言版。免积分送给需要的朋友。
算法导论C语言版本。下载后绝对不会后悔。嗯。谢谢
算法导论 C语言各类算法
快速排序算法C语言实现快速排序算法C语言实现 www.edsionte.com/techblog
算法导论之堆排序,C语言实现版
【排序算法】快速排序(C语言)
算法导论 c语言的全部代码实现 需要c99的支持
快速排序算法C语言程序,快速排序算法和冒泡排序法类似,都是基于交换排序思想,但是快速排序算法对冒泡排序算法进行改进,从而使其具有更高的执行效率。
快速排序 实验数据:input.txt(共100个数据) ——要求按从小到大进行排序 将排好序的数据输出到output.txt文件中
程序运行后,在当前文件夹下(程序)先生成一个有5000个整数的text1文件,然后从中读取文件,将5000数升值排序后写到text2文件中
算法导论是关于程序开发的一些算法与数据结构有关
C语言写的桶排序算法C语言写的桶排序算法C语言写的桶排序算法
冒泡排序 简单选择排序 c语言基础 排序算法 数组操作 排序算法实验 简单的c语言程序 排序算法输出
根据算法导论书上的伪代码写的C语言版代码。
算法导论上的堆排序c++源程序||学习分享
算法导论 快速排序 堆排序 算法导论上的算法实现更加精简高效 代码可编译运行测试 加了测试用例 加了注释
快速排序算法,C语言 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有...