快速法实现对下列关键码的排序:{72,11,13,17,19,71,23,94,16,105,68,2,3,4,5,7,
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 18:27:12
快速法实现对下列关键码的排序:{72,11,13,17,19,71,23,94,16,105,68,2,3,4,5,7,23,29,73,31,37,41,52}
//快排c++代码
/*基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,
其中一部分的所有数据都比另外一部分的所有数据都要小,
然后再按此方法对这两部分数据分别进行快速排序,
整个排序过程可以递归进行,以此达到整个数据变成有序序列.*/
#include<iostream>
using namespace std;
//从小到大
int partition(int a[],int p,int r)
{
int x=a[r];//通常,拿最后一个值,作为预期的中间值
int middle=p;//记录“较小的一段数据”的最大下标.通常这个值在p和r的中间,故起名middle
for(int j=p;j<r;j++)
{
if(a[j]<x)
{
if(j!=middle)
{
int temp=a[middle];
a[middle]=a[j];
a[j]=temp;
}
middle++;
}
}
int temp=a[r];
a[r]=a[middle];
a[middle]=temp;
return middle;
}
void QuickSort(int a[],int p,int r)
{
if(p<r)
{
int q=partition(a,p,r);
QuickSort(a,p,q-1);
QuickSort(a,q+1,r);
}
}
int main()
{
int array[]= {72,11,13,17,19,71,23,94,16,105,68,2,3,4,5,7,23,29,73,31,37,41,52};
QuickSort(array,0,22);
for(int i=0;i<=22;i++)
cout<<array[i]<<" ";
cout<<endl;
return 0;
}
/*基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,
其中一部分的所有数据都比另外一部分的所有数据都要小,
然后再按此方法对这两部分数据分别进行快速排序,
整个排序过程可以递归进行,以此达到整个数据变成有序序列.*/
#include<iostream>
using namespace std;
//从小到大
int partition(int a[],int p,int r)
{
int x=a[r];//通常,拿最后一个值,作为预期的中间值
int middle=p;//记录“较小的一段数据”的最大下标.通常这个值在p和r的中间,故起名middle
for(int j=p;j<r;j++)
{
if(a[j]<x)
{
if(j!=middle)
{
int temp=a[middle];
a[middle]=a[j];
a[j]=temp;
}
middle++;
}
}
int temp=a[r];
a[r]=a[middle];
a[middle]=temp;
return middle;
}
void QuickSort(int a[],int p,int r)
{
if(p<r)
{
int q=partition(a,p,r);
QuickSort(a,p,q-1);
QuickSort(a,q+1,r);
}
}
int main()
{
int array[]= {72,11,13,17,19,71,23,94,16,105,68,2,3,4,5,7,23,29,73,31,37,41,52};
QuickSort(array,0,22);
for(int i=0;i<=22;i++)
cout<<array[i]<<" ";
cout<<endl;
return 0;
}
快速法实现对下列关键码的排序:{72,11,13,17,19,71,23,94,16,105,68,2,3,4,5,7,
关键码序列 66 13 51 76 81 26 57 69 23 要按关键码递增的顺序排列 若采用快速排序法
C语言中 关于快速排序法的题目:关键码序列:(66,13,51,76,81,26,57,69,23)按照递增顺序排序,采
快速排序的问题对下列关键字序列用快速排序的方法进行排序时,速度最快的的情形是()A{21,25,5,17,9,23,30
关于关键码排序,快速排序的题目,解题思路是什么啊!
待排序关键码(25,18,9,33,67,82,53,95,12,70)按递增顺序,以25为分界元素的快速排序法,第一
快速排序法问题设待排关键码序列为(25,18,9,33,67,82,53,95,12,70),要按关键码值递增的顺序进行
写出使用冒泡排序法对下列数据进行从小到大排序的中间过程和最后结果 24,19,32,43,38,6,13,22
下列各个排序算法中,要求辅助空间最大的是 A.希尔排序法 B.快速排序法 C.堆排序法 D.二路归并排序法
若给定的关键码集合为{20,15,14,18,21,36,40,10},写出经过一趟快速排序的结果.
待排序的关键码序列为(15,20,9,30,67,65,45,90)要按关键码值递增的顺序排序,采取简单选项排序法,
对下列关键字序列(15,4,38,51,9,17,80,2)进行直接插入排序?