台创软启动荣军波是个程序菜鸟,调试通了以下程序。公布出来,欢迎拍砖!
选择排序 (1 满分)
题目描述
以递归方法实现选择排序(从小到大),为便于检查,要求输出每一次操作后的数组元素的排列状况。
输入格式
两行输入,第一行表示数组元素个数,第二行表示数组元素,每个数之间以空格隔开
输出格式
每一行为一次操作后的输出

#include <iostream>
using namespace std;
int num=0;// 这个全局变量必须在main之外独立设置
int *raght=new int[num];//开始把这个动态数组定义在函数内,一递归恢复初值保存不了中间变量
//在外面定义right后,经常报故障 error:reference to'right' is ambiguous翻译为
//莫宁两可,一时摸不着头脑。后百度知道程序库里面有相同的名称,改为‘raght'一切OK!
void quicksort(int *array,int len)
{
int *left=new int[len];
int left_idx=0,right_idx=0;
int max=0,add=0;
if(len==0) return; //必须为1个最后要减掉1就是0才一个不漏,不多不少递归成功。
for(int i=0;i<len;i++)
if(array[i]>max)
{ max=array[i];
add=i;
};
//cout<<max; //作为测试每次递归的中间过程是否正确
//cout<<endl;
for(int i=0;i<add;i++)
left[left_idx++]=array[i];
for(int i=add;i<len;i++)
left[left_idx++]=array[i+1];
// for(int i=0;i<left_idx-1;i++) //这句话是测试中间过程用的 ,必须从这里开始屏蔽,否则输出错误
// cout<<left[i]<<' ';
//cout<<endl;
num++;//这个全局变量必须在main之外独立设置
for(int i=num;i>0;i--)
raght[i]=raght[i-1];//先从最大的开始移动,最后移动一格
raght[0]=max;
for(int i=0;i<num;i++)
cout<<raght[i]<<' ';
cout<<endl;
quicksort(left,left_idx-1);
delete[] left;
// delete[] right;
return;
}
int main()
{
int len;
cin>>len;
int *array=new int[len];
for(int i=0;i<len;i++)
{ cin>>array[i];
}
quicksort(array,len);
return 0;
}
免费试用交大台创软启动啦!
扫描二维码,关注荣军波---交大台创软启动的最新电力电子产品研发动态
