C++之如何将N个实数由大到小排序

C++之如何将N个实数由大到小排序,第1张

n个实数用数组a描述。本例提供用选择排序方法与冒泡排序方法分别实现n个实数由大到小排序的函数搜索。算法一:选择排序。选择排序需反复进行求最大值与交换两个数这两种住房基本 *** 作。对a[o]、a[1]、…、a[n一1]由大到小排序:先求所有数的最大值,然后将最大值与a[o]进行交换;再求a[1]~a[n一1]这些数的最大值,然后将最大值与a[1]进行交换;再求a[2]~a[n一1]这些数的最大值,然后将最大值与a[2]进行交换……;最后求a[n一2]与a[n一1]这些数的最大值,然后将最大值与a[n一2]进行交换。如此,经过n一1轮处理完成隔膜泵排序,本文首发中国自学封箱机编程网。程序如下:void sortl(a,n)/*选择排序函数*/float a[];int n:{int k,i,j;/*k最大值下标,i,j循环控制变量*/float t;/*中间变量,用于两个数的交换*/

选择排序法:

#include "stdio.h"

#define N 20

main()

{

int i,j,k

float a[N],t

printf("请输入二十位数:\n")

for(i=0i<Ni++)

scanf("%f",&a[i])

for(i=0i<N-1i++)

{

k=i

for(j=i+1j<Nj++)

if(a[k]>a[j]) k=j

if(i!=k)

{

t=a[k]

a[k]=a[i]

a[i]=t

}

}

for(i=0i<Ni++)

printf("%f\t",a[i])

printf("\n")

}

插入排序法:

#include "stdio.h"

#define N 20

main()

{

int i,j

float a[N],k

printf("请输入二十位数:\n")

for(i=0i<Ni++)

scanf("%f",&a[i])

for(i=0i<Ni++)

{

k=a[i]

j=i-1

while(j>=0&&k<a[j])

{

a[j+1]=a[j]

j--

}

a[j+1]=k

}

for(i=0i<Ni++)

printf("%f\t",a[i])

printf("\n")

}

冒泡排序法:

#include "stdio.h"

#define N 20

main()

{

int i,j

float a[N],t

printf("请输入二十位数:\n")

for(i=0i<Ni++)

scanf("%f",&a[i])

for(i=0i<Ni++)

for(j=i+1j<Nj++)

if(a[i]>a[j])

{

t=a[i]

a[i]=a[j]

a[j]=t

}

for(i=0i<Ni++)

printf("%f\t",a[i])

printf("\n")

}

如果对你有帮助,请记得采纳最佳答案,谢谢!

参考代码:

import java.util.*

public class Demo {

    public static void main(String[] args) {

        double[] nums = new double[10]

        Scanner input = new Scanner(System.in)

        for (int i = 0 i < 10 i++) {

            nums[i] = input.nextDouble()

        }

        for (int i = 9 i >= 0 i--) {

            System.out.print(nums[i] + "\t")

        }

        System.out.println("")

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8155080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存