比较快速排序算法和Sherwood 快速排序算法中比较的次数
问题描述
输入数据集 { 8,18, 2,16, 6,4,40, 3,5,7,1,9 , 22 ,11,13,10,20}
A.显示输出快速排序中的比较次数和Sherwood中比较的次数,及排序结果。注:第一个元素选最后一个。
B.显示奇数项(下标从0开始,)降序排列,偶数项按升序排列的排列结果。
代码实现
对于题目A:显示输出快速排序中的比较次数和Sherwood中比较的次数,及排序结果。注:第一个元素选最后一个。
代码如下:
//A.显示输出快速排序中的比较次数和Sherwood中比较的次数,及排序结果。注:第一个元素选最后一个。
#include <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<cstdlib>
#include<time.h>
using namespace std;
int partition(int *arr,int s,int e);
void quicksort(int *arr,int s,int e);
void shuffle_quicksort(int *arr,int s,int e);
int shuffle_partition(int *arr,int a,int b); //洗牌
int fle;//全局变量fle来统计比较次数
int main()
{
int i;
int n=17;
int a[] = {
8,18,2,16,6,4,40,3,5,7,1,9,22,11,13,10,20};
//快速排序
quicksort(a,0,n-1);
cout<<"对数组快速排序后为:"<<endl;
for(i=0;i < n;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"快速排序洗牌次数:"<<fle<<endl;
fle=0;//全局变量清零
//shuffle快速排序
shuffle_quicksort(a,0,n-1);
cout<<"对数组shuffle快速排序后为:"<<endl;
for(i=0;i < n;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"shuffle快速排序洗牌次数:"<<fle<<endl;
return 0;
}
int partition(int *arr,int l,int r)