快速排序的一种简单实现
来源:互联网 发布:林俊杰瘦 知乎 编辑:程序博客网 时间:2024/05/10 13:33
快速排序算法是分治思想和递归思想的综合运用。本文给出了它的一个简单实现,用以从代码理解快速排序。这个实现仅仅体现了快速排序的基本思想,还有很大的优化空间。通过改进枢纽元的选取方法,可以节省5%的运行时间;通过有效利用插入排序的优点,可以节省15%的运行时间。总的效率可以提高20%以上。具体优化参见《Data Structures and Algorithm Analysis in C》。有关如何选取排序算法,将在随后的文章中详细讨论。
#include <stdio.h>
#include <stdlib.h>
/*交换函数*/
void swap(int *a, int*b)
{
int t = *a;
*a = *b;
*b = t;
}
/*快速排序主程序*/
void q_sort( int a[], int left, int right )
{if(left>=right){return;}
int i=left, j=right;
int pivot = a[right];
while(true)
{
while((a[i]<=pivot)&&(i<j))i++;
while((a[j]>=pivot)&&(i<j))j--;
if(i<j)
{
swap(&a[i],&a[j]);
}
else
{
break;
}
}
swap(&a[i], &a[right]);
q_sort(a, left, i-1);
q_sort(a, i+1, right);
}
/*快速排序驱动程序*/
void quicksort( int a[], int n )
{
q_sort(a, 0, n-1);
}
/*测试程序*/
void main()
{
int a[100];
for(int i=0;i<100;i++)
{
a[i] = rand()%100;
}
printf("Before\r\n");
for(i=0;i<100;i++)
{
printf("%d ",a[i]);
}
quicksort(a,100);
printf("\r\nAfter\r\n");
for(i=0;i<100;i++)
{
printf("%d ",a[i]);
}
}
- 快速排序的一种简单实现
- 一种简单的用java实现快速排序(Quicksort)
- 一种简单的用java实现快速排序(Quicksort)
- 快速排序的一种实现
- 快速排序的一种实现
- 快速排序,一种实现
- 快速排序算法的一种实现
- 快速排序的一种java实现
- 快速排序的一种实现方法
- 快速排序的简单实现
- 快速排序的简单实现
- 快速排序的简单实现
- 快速排序的简单实现
- 快速排序一种易于理解的方式实现
- 快速排序的一种写法
- 快速排序的一种写法
- 快速排序的一种方法
- 快速排序简单实现
- 禅语
- 至今为止最准确的血型分析报告
- private virtual 与 Template Method模式
- Java Bean原理与应用
- sql语句中 int varchar互相转换
- 快速排序的一种简单实现
- 类别查询 父节点标题 sql
- 去除哔哔声的方法
- 单例模式
- 防止浏览器快取网页
- ids for this class must be manually assigned before calling save()
- 智能指针五大黄金法则(Five Golden rules of smart pointers)
- p e r l 与 数 据 库 基 本 信 息
- 智联招聘的雷人广告