早教吧作业答案频道 -->其他-->
帮我找找我这段程序哪里错了?c++编程,使用以下格式给定一个输入,读取数据后,用快速排序法将每排从小到大重新排好(Quicksort:pivot=(x[left]+x[right])/2)Cases:3101234567891010109876543
题目详情
帮我找找我这段程序哪里错了?
c++编程,使用以下格式给定一个输入,读取数据后,用快速排序法将每排从小到大重新排好(Quicksort:pivot = (x[left] + x[right])/2)
Cases:3
10
1 2 3 4 5 6 7 8 9 10
10
10 9 8 7 6 5 4 3 2 1
11
8 1 11 2 10 9 3 4 7 6 5
我的程序,结果是
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 1
1 2 3 4 7 8 9 10 11 6 5
#include
using namespace std;
// The partition function
int partition(int* input,int p,int r)
{
\x05 int pivot = (input[p] + input[r])/2;
while ( p < r )
{
while ( input[p] < pivot )
p++;
while ( input[r] > pivot )
r--;
if ( input[p] == input[r] )
p++;
else if ( p < r )
{
int tmp = input[p];
input[p] = input[r];
input[r] = tmp;
}
}
return r;
}
// The quicksort recursive function
void quicksort(int* input,int p,int r)
{
if ( p < r )
{
int j = partition(input,p,r);
quicksort(input,p,j-1);
quicksort(input,j+1,r);
}
}
int main()
{
\x05int input[100],i,n,beg,end,test,j;
\x05couttest;
\x05coutinput[i];
\x05\x05}
\x05\x05
\x05\x05beg=0;
\x05\x05end=n-1;
\x05\x05quicksort(input,0,9); //Calling of QuickSort Function
\x05\x05for(i=1;i
c++编程,使用以下格式给定一个输入,读取数据后,用快速排序法将每排从小到大重新排好(Quicksort:pivot = (x[left] + x[right])/2)
Cases:3
10
1 2 3 4 5 6 7 8 9 10
10
10 9 8 7 6 5 4 3 2 1
11
8 1 11 2 10 9 3 4 7 6 5
我的程序,结果是
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 1
1 2 3 4 7 8 9 10 11 6 5
#include
using namespace std;
// The partition function
int partition(int* input,int p,int r)
{
\x05 int pivot = (input[p] + input[r])/2;
while ( p < r )
{
while ( input[p] < pivot )
p++;
while ( input[r] > pivot )
r--;
if ( input[p] == input[r] )
p++;
else if ( p < r )
{
int tmp = input[p];
input[p] = input[r];
input[r] = tmp;
}
}
return r;
}
// The quicksort recursive function
void quicksort(int* input,int p,int r)
{
if ( p < r )
{
int j = partition(input,p,r);
quicksort(input,p,j-1);
quicksort(input,j+1,r);
}
}
int main()
{
\x05int input[100],i,n,beg,end,test,j;
\x05couttest;
\x05coutinput[i];
\x05\x05}
\x05\x05
\x05\x05beg=0;
\x05\x05end=n-1;
\x05\x05quicksort(input,0,9); //Calling of QuickSort Function
\x05\x05for(i=1;i
▼优质解答
答案和解析
for(i=1;i>input[i];
}
输入的时候是下标1~n
quicksort(input, 0, 9);
为什么排序时候会是0~9呢,应该是也是1~n才对吧
}
输入的时候是下标1~n
quicksort(input, 0, 9);
为什么排序时候会是0~9呢,应该是也是1~n才对吧
看了 帮我找找我这段程序哪里错了?...的网友还看了以下:
任意找一个正数,利用计算器将该数除以2,将所得结果再除以2……随着运算次数的增加,你发现了什么?如 2020-05-16 …
找两个大小相同的鸡蛋,将一个煮熟,然后分别在桌面上用相同的力将它们旋转,通过列表记录转动的时间.多 2020-05-17 …
将数据元素2,4,6,8,10,12,14,16,18,20依次存放于一个一维数组中,然后采用折半查 2020-05-26 …
随即产生10个两位数的正整数,找其中的奇数和偶数的个数,并将其排序输出 2020-06-06 …
怎样在(0,1)开区间与[0,1]闭区间之间做一一对应?怎样将(0,1)区间所有实数与[0,1]区 2020-06-23 …
将a到z编号为1到26然后找一个单词,单词的各个字母所代表的数字加起来是100谁能找到啊!跪... 2020-07-07 …
给定n个整数,其中只有一个数出现了奇数次,其余出现偶数次,用一个线性时间算法,找出奇数次的那个数. 2020-07-23 …
编写一个函数,其原型为:voidindex(inta[],intn,int&sub)。功能是,在大 2020-07-24 …
找规律数学题任意找一个3的倍数的数,先把这个数的每一个数位的数都立方,再相加,得到一个新数,然后把新 2020-11-06 …
任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序.要求:判断一个数是否为素数用函数实 2021-02-13 …