给出三个数进行排序,从小到大输出,画出流程图,描述计算过程,且编程实现

给出三个数进行排序,从小到大输出,画出流程图,描述计算过程,且编程实现,第1张

没说编程语言,但思想都是一样的。

把这三个数分别赋给a,b,c。

用条件判断语句(if)

先用a与b比,如果a>b,那么交换a与b的值(有的语言有交换函数,没有的话可以用个中间变量d,然后d=a;a=b;b=d,这样,a和b的值就互换了)

再用c和b比较,如果c<b,那么交换b与c的值(交换方法与交换a,b时相同,改字母就是了),同时要是这个条件成立的话,不但要交换b,c的值,还要把交换后的b的值和a再进行一次比较(其实就是if里再嵌套一个if语句,把a和b比较的语句复制放到这个if语句内就行了)。

流程图就是按思路画的,你再看一看画流程图的规则就行了

冒泡第一次:14 15 28 5 10 30

冒泡第二次:14 15 5 10 28 30

冒泡第三次:14 5 10 15 28 30

冒泡第四次:5 10 14 15 28 30

选择排序我忘记了!

#include <stdioh>

#include <stdlibh>

#include <timeh>

void main()

{

int a[100],i,j,t;

srand(time(NULL));

for(i=0;i<100;i++)

a[i]=rand()%200+1; //随机产生100个1到200的数

//排序

for(i=0;i<99;i++)

{

for(j=i+1;j<100;j++)

{

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

{

t=a[j];

a[j]=a[i];

a[i]=t;

}

}

}

for(i=0;i<100;i++) //输出结果,十个一行

{

printf("%d ",a[i]);

if(i%9==0)

printf("\n");

}

}//一个简单的选择法,每次将最小的选出来

选择法就是按每一位应该是什么就是什么。

语言不是问题!

流程图我就用文字画,你自己图形化吧。

大概就是

1、初始化i=0;

2、判断i<n,是至3,否至6;

3、判断a[i]是不是在i-n-1中最大的?是,走5,不是走4

4、往后比较,与最大的进行交换,使得a[i]是在i-n中最大;

5、i++,调至2;

6、结束,输出结果。

参考代码:

import javautilScanner;

public class Main

{

private Scanner in = new Scanner(Systemin);

private int n, a[];

private void input(){

n = innextInt();//输入数组个数

a=new int [n];

for(int i=0;i<n;i++){

a[i]=innextInt();

}

}

private void sort(){

int i,j,k,t;

for(i=0;i<n-1;i++)

{

k=i;//假设x[i]最大,记为x[k]

for(j=i+1;j<n;j++){

if(a[k]<a[j])//如果有比x[k]大的数,记该数为最大的数x[k]

k=j;

}

if(k!=i)//一轮比完后,若x[k]发生了变化,说明有比x[i]大的数在后面。

{

t=a[i];

a[i]=a[k];

a[k]=t;//交换x[i]后面所有数中最大的那个,使x[i]是其后所有元素中最大的。

}

}

}

private void printa(){

for(int i=0;i<n;i++){

Systemoutprint(a[i]+" ");

}

Systemoutprintln();

}

public static void main(String[] args)

{

Main a = new Main();

ainput();

asort();

aprinta();

}

}

1选择排序思想:假定按从大到小排序,比较数组中所有数的大小,挑出最大的元素将其与第一个元素交换位置,然后比较除第一个元素外其他各元素的大小,挑出最大的元素与第二个元素交换位置,依此类推,完成排序。

2给你解释开头的n-2:k=0 to k=n-2,k总共取n-1个元素,当k=n-2时,对应a[n-2]为数组倒数第二个元素,此时i=n-i,a[i]即a[n-1]对应数组最后一个元素,当比较完a[n-2]和a[n-1]并排序后,整个数组就完成了排列。

3代码:

for(k=0;k<=n-2;k++)

{

index=k;

for(i=k+1;i<=n-1;i++)

{

if(a[i]<a[index])

{

index=i;

}

}

temp=a[k],a[k]=a[index],a[index]=temp;

}

以上就是关于给出三个数进行排序,从小到大输出,画出流程图,描述计算过程,且编程实现全部的内容,包括:给出三个数进行排序,从小到大输出,画出流程图,描述计算过程,且编程实现、冒泡排序流程图、C语言的一个简单程序:输入100个任意数字,按从小到大排序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9584865.html

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

发表评论

登录后才能评论

评论列表(0条)

保存