为了账号安全,请及时绑定邮箱和手机立即绑定

当然各位大神都知道这个考函数和数组,还望给个力小弟提前感谢大家了!

当然各位大神都知道这个考函数和数组,还望给个力小弟提前感谢大家了!

白衣染霜花 2022-08-04 11:07:54
编写函数,对实型数组进行降序排序。主函数输入一个实型数组,调用函数完成排序,主函数中要求输出排序结果(必须要函数调用)(必须通过函数调用实现功能而不是在主函数实现功能)
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

#include<stdio.h>

//冒泡排序法
void BubbleSort(int * pData,int Count)
{
int iTemp;
for(int i=1;i<Count;i++)
{ //一共进行(count-1)轮,每次得到一个最小值
for(int j=Count-1;j>=i;j--)//每次从最后往前交换,得到最小值
{
if(pData[j]<pData[j-1])
{
iTemp = pData[j-1];
pData[j-1] = pData[j];
pData[j] = iTemp;
}
}
}
}
int main()
{
int *data;
int n,i;
printf("请输入要排序的数的个数:\n");
scanf("%d",&n);
data=new int[n];
printf("请输入%d个数:\n",n);
for (i=0;i<n;i++)
{
scanf("%d",&data[i]);
}
BubbleSort(data,n);

printf("排序结果为:\n");
for (i=0;i<n;i++)
{
printf("%d ",data[i]);
}
return 0;
}


查看完整回答
反对 回复 2022-08-08
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

#include<stdio.h>
#define N 20
int compare(float x,float y)
{
if(x - y >1e-6)
return 1;
else if(y - x > 1e-6)
return -1;
else
return 0;
}

void swap(float x,swap y)
{
float z;
z = x;
x = y ;
y = z;
}

void sort(float a[],int n)
{
int i,j;
for(i = 0 ; i < n ; i ++)
for(j = i + 1; j < n ; j ++)
if(compare(a[i],a[j]) < 0)
swap(a[i],a[j]);
}

void main(void)
{
float array[N];
int n,i;
printf("请输入你的数组元素个数:(n<=N)\n");
scanf("%d",&n);
for(i = 0 ; i < n ; i ++)
scanf("%f",&array[i]);
printf("排序前数组为:\n");
for(i = 0 ; i < n ; i ++)
printf("%.2f ",array[i]);
sort(array,n);
printf("排序后数组为:\n");
for(i = 0 ; i < n ; i ++)
printf("%.2f ",array[i]);

}


查看完整回答
反对 回复 2022-08-08
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

#include <iostream>
#include <cmath>
using namespace std;

const int NUM=5;

void quicksort(double str[],int front,int rear)
{
int lower=front+1,upper=rear;
swap(str[front],str[(front+rear)/2]);
double mid=str[front];
while(lower<=upper)
{
while(str[lower]<mid) lower++;
while(str[upper]>mid) upper--;
if(lower<upper)
swap(str[lower++],str[upper--]);
else lower++;//这是为了结束外层循环;
}
swap(str[front],str[upper]);
if(upper+1<rear) quicksort(str,upper+1,rear);
if(upper-1>front) quicksort(str,front,upper-1);
}
void qs(double str[],int n)
{
int i,max;
if(n<2) return;
for(i=1,max=0;i<NUM;i++)//换最大元素到数组末尾;
if(str[i]>str[max]) max=i;
swap(str[NUM-1],str[max]);
quicksort(str,0,NUM-2);
}
int main()
{
int i;
double str[NUM];
for(i=0;i<NUM;i++)
scanf("%lf",&str[i]);
qs(str,NUM);
for(i=0;i<NUM;i++) cout<<str[i]<<' '; cout<<endl;
return 0;
}

一般数据结构与算法教科书都有快速排序的代码:这个就是以前我不会调用STL时候自己写的,有什么问题可以给我留言 : 这个是升序排序的,想降序可以:
for(i=NUM-1;i>=0;i--) cout<<str[i]<<' '; cout<<endl;


查看完整回答
反对 回复 2022-08-08
  • 3 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信