快速排序 以第一个元素为中轴 在小于10个元素时转为直接插入排序 并测试1000000个整形元素的速度
来源:互联网 发布:云计算适合什么人学 编辑:程序博客网 时间:2024/05/01 17:41
#include<iostream>
#include<ctime>
using namespace std;
int Partition(int A[], int l, int r);
void QSort(int A[], int l, int r);
void SelectionSort(int A[], int l, int r);
void QuickSort(int A[], int N)
{
QSort(A, 0, N-1);
}
void QSort(int A[], int l, int r)
{
if(r - l > 10)
{
int pivot = Partition(A, l, r);
QSort(A, l, pivot-1);
QSort(A, pivot+1, r);
}
else
{
SelectionSort(A, l, r);
}
}
int Partition(int A[], int l, int r)
{
int pivot_key = A[l];
while(l < r)
{
while(l < r && A[r] >= pivot_key) --r;
A[l] = A[r];
while(l < r && A[l] <= pivot_key) ++l;
A[r] = A[l];
}
A[l] = pivot_key;
return l;
}
void SelectionSort(int A[], int l, int r)
{
int min = 0;
for(int i=l; i<r; i++)
{
min = i;
for(int j=i+1; j<=r; j++)
{
if(A[j] < A[min])
{
min = j;
}
}
swap(A[i], A[min]);
}
}
int main()
{
long const N = 100000;
int *A = new int[N];
srand((unsigned)time(NULL)); //随机种子
for(int i=0; i<N; i++)
{
A[i] = rand(); //产生随机数
}
clock_t start, finish, total_time;
start = clock(); //开始时间
QuickSort(A,N); //排序
finish = clock();//结束时间
total_time = finish - start;//计算时间差
cout<<"Total time is: "<<total_time<<endl;
/*for(i=0; i<N; i++)
{
cout<<A[i]<<' ';
}*/
cout<<endl;
return 0;
}
- 快速排序 以第一个元素为中轴 在小于10个元素时转为直接插入排序 并测试1000000个整形元素的速度
- 快速排序 以第一个元素为中轴 并测试1000000个整形元素的速度
- 快速排序 以第一个,中间,最后元素的平均值为中轴 并测试1000000个整形元素的速度
- 以第一个数组元素作为基准元素的快速排序
- 快速排序算法——以数组第一个元素为主元
- 5个元素排序
- 最大堆排序A[1]为第一个元素
- 最大堆排序A[0]为第一个元素
- 单链表实现大于第一个元素的节点在后,小于第一个节点的元素在前
- 第三周实践项目8 以第一个元素为分界线,将所有小于它的元素移到该元素的前面,将所有大于它的元素移到该元素的后面。
- 实现一个函数,传递一个有10个已经排好序的整形元素数组(数组大小实际为11)中,将一个指定的值按顺序插入,并在main函数中将插入后的数组输出。
- 并非排序,在若干的元素中求出最大的前5个元素
- 数组元素以第三个元素为中心对换两边的两个元素
- 优化的快速排序Java实现,有一块元素个数小于k后采用插入排序
- Python中对Tuple之间排序时如何指定第几个元素为关键字排序的问题
- 二分查找、二分查找小于等于key的最后一个元素、二分查找大于等于key的第一个元素
- 输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。
- 寻找最小的k个数(先快速排序,然后输出前k个元素)
- lucene 查看分词器分出的词
- 直接调用类成员函数地址
- 如何访问IE历史记录
- GridView控件的一般分页用法
- mythTV分析——简介
- 快速排序 以第一个元素为中轴 在小于10个元素时转为直接插入排序 并测试1000000个整形元素的速度
- 二. 回调函数
- 4月17日参加博客园俱乐部活动
- linux UART串口驱动
- 223434
- 项目中的错误:类静态成员初始化
- 自己用LOGO.
- lucene compass 学习系列 笔记 一,纯compass 构建
- HTML字符实体(Character Entities),转义字符串(Escape Sequence)