#include <iostream>
using namespace std;
template< typename T >
void sort( T* a, int n){
if(n<=1) return;//递归退出条件,否则会出现段错误
if(n==2){
if(a[1]<*a) swap(a[1],*a);
return;
}
swap(*a,a[n>>1]);
T flag = a[0];//保存分界值
T* left = a+1;
T* right = a+n-1;
while( left<right ){
while( left<right && *left<flag ) ++left;
while( *right>=flag && right>a ) --right;
if( left<right ) swap( *left,*right);
}
swap(*a,*right);
sort(a,right-a);
sort(right+1,(n-1)-(right-a));
}
int main()
{
int a[10240];
for(int i=0; i<10240; i++)
a[i] = 10240-i;
time_t t = time(NULL);
sort(a,10240);
cout << "time: " << time(NULL)-t << endl;
for(int i=0; i<10; i++)
cout << a[i] << ' ';
cout << endl;
}
分享到:
相关推荐
快速排序的简单实现程序,java编制,迭代法对数据组分区,知道简单的java基础,基本就可以看懂这个小程序了
数据结构课程中的各种排序示例完整程序,用C语言实现 各种示例包括:希尔排序、选择排序、插入排序、冒泡排序、快速排序等
用c++写的快速排序 Swap交换两个int类型的数据 Sort排序 QuickSort快速排序(递归) main
与本人博文《算法专项(1)——快速排序》相配套的工程源码,用JAVA实现
TIA博途中通过SCL语言实现快速排序的具体方法示例
利用分治法实现快速排序,这是一个示例程序,可轻易改成模板
快速排序:快速排序算法的基本思想是选择一个基准元素,将数组分为两个子数组,其中一个子数组的所有元素都小于基准元素,另一个子数组的所有元素都大于等于基准元素。然后递归地对这两个子数组进行快速排序,最后将...
C语言实现的Quicksort(快速排序), 最基本的版本, 可以自动生成随机数后进行排序并显示结果, 适合初学者学习.
常用三种排序:快速排序、冒泡排序、插入排序的java实现示例
快速排序 以上代码实现了使用C语言编写的快速排序算法。函数swap用于交换两个元素的位置。函数partition用于将数组划分为两部分,并返回基准值的索引。函数quick_sort是递归实现的快速排序算法,它根据基准值的索引...
本文实例讲述了Python实现的插入排序,冒泡排序,快速排序,选择排序算法。分享给大家供大家参考,具体如下: #!/usr/bin/python # coding:utf-8 #直接插入排序 def insert_sort(list): for i in range(len(list))...
快速排序教程和java示例代码
核心思想将数组中所有元素都跟一个基准元素x比(随意选取,常取第一个或最后一个),比x小的划分成左边一块,比x大的划分成右边一块,得到两个子问题。然后递归处理这两个子问题即可。其关键在于对数组的划分。
利用C语言实现的快速,在GCC编译运行通过,在windows没有问题
数据结构中的快速排序算法,用C语言实现的完整示例。
主要介绍了Python编程二分法实现冒泡算法+快速排序代码示例,具有一定借鉴价值,需要的朋友可以参考下
快速排序算法来源于分治法的思想策略,这里我们将来为大家简单解析一下快速排序的算法思想及Python版快速排序的实现示例:
在这个示例中,我们首先定义了一个swap函数用于交换数组中两个元素的值,以及一个partition函数用于对数组进行分区操作。然后定义了quickSort函数来实现...希望这个示例能帮助你理解如何在C语言中实现快速排序算法!
快速排序(Quick Sort)源码及运行示例
快速排序、筛选排序、Shell排序三种排序算法C语言程序示例,供大家学习交流。