编写java程序:输入N个数字,对其进行从小到大排序

编写java程序:输入N个数字,对其进行从小到大排序,第1张

实现思路:就是输入的数字之间有固定的规则,之后读取后,依次进行大小比较,之后直到排序结束,输出结果即可:

import javautilScanner;

public class ArrangedNumbers {

Integer arryNum[];

int count = 0;/ 统计数字 /

boolean judgeIsNum = true;

StringBuffer stringbuffer = new StringBuffer();

Scanner scanner = new Scanner(Systemin);

String character;

int memoryNum;

/

任意输入字符

@return 返回输入的内容

/

// public String inputNum() {

// return null;

// }

/

判断为数字

/

public void judgmentFigures() {

while (judgeIsNum) {

Systemoutprintln("请任意输入数字,以空格间隔,以回车结束!");

character = scannernextLine();

char[] figures = charactertoCharArray();

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

if (!(figures[i] >= '1' && figures[i] <= '9')

&& figures[i] != 32) {

judgeIsNum = true;

break;

}

judgeIsNum = false;

}

if (!judgeIsNum)

stringbufferappend(character);

}

String inputContent = stringbuffertoString();

String[] numbers = inputContentsplit("\\s+");

arryNum = new Integer[numberslength];

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

try {

memoryNum = IntegerparseInt(numbers[i]);

arryNum[count] = new Integer(memoryNum)intValue();

count++;

} catch (Exception e) {

/ 如果不出现异常,则说明肯定是数字 /

}

}

}

/

对数字进行排序

/

public void compareNum() {

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

for (int j = 0; j < arryNumlength - i - 1; j++) {

if (arryNum[j] > arryNum[j + 1]) {

Integer temp = arryNum[j];

arryNum[j] = arryNum[j + 1];

arryNum[j + 1] = temp;

}

}

}

}

/

按升序排列输出

/

public void outputNum() {

Systemoutprintln("按升序排序:");

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

Systemoutprintln(arryNum[i]);

}

}

}

//package comcolorprogram;

public class JJArrangedNumbers {

public static void main(String args[]) {

ArrangedNumbers arrangeNumbers = new ArrangedNumbers();

arrangeNumbersjudgmentFigures();

arrangeNumberscompareNum();

arrangeNumbersoutputNum();

}

}

--------运行结果-------

请任意输入数字,以空格间隔,以回车结束!

123 4 5 6 7 7,23

请任意输入数字,以空格间隔,以回车结束!

2 e adf 3 4

请任意输入数字,以空格间隔,以回车结束!

5 6 6 76 7

按升序排序:

5

6

6

7

76

//VC++60下调试通过。希望能对你有用

#include <iostream>

using namespace std;

template <class T>

void sort(T a, int n)

{

int t;

T temp;

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

{

t=i;

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

{

if ((a+t)>(a+j))

t=j;

}

temp=(a+i);

(a+i)=(a+t);

(a+t)=temp;

}

}

static float arr0[6]={20,650,90,780,880,-20};

static double arr1[6]={5580,9990,1230,2220,550,4560};

static int arr2[6]={123,456,789,654,321,5};

void main()

{

cout<<"float exp"<<endl;

for (int i=0; i<6; i++)

{

cout<<arr0[i]<<" ";

}

cout<<endl;

sort(arr0, 6);

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

{

cout<<arr0[i]<<" ";

}

cout<<endl;

cout<<"double exp"<<endl;

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

{

cout<<arr1[i]<<" ";

}

cout<<endl;

sort(arr1, 6);

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

{

cout<<arr1[i]<<" ";

}

cout<<endl;

cout<<"int exp"<<endl;

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

{

cout<<arr2[i]<<" ";

}

cout<<endl;

sort(arr2, 6);

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

{

cout<<arr2[i]<<" ";

}

cout<<endl;

}

源程序以及算法注释如下:

#define _CRT_SECURE_NO_WARNINGS//VS编译环境需要进行宏定义,VC60可忽略

#include<stdioh>//输入输出头文件

int main()

{

int number[10], New_number[10];//定义数组的数据类型为整型

int i, j, m, n, k;//定义变量的数据类型为整型

printf("input 10 <int> number:");//文字提示

for (i = 0; i <= 9; i++)//用循环输入数值给数组number并赋给数组New_number

{

scanf("%d", &number[i]);//输入10个整形数字到数组中

New_number[i] = number[i];//数组number元素赋给数组New_number

}

for (n = 0; n <= 8; n++)//要进行(10-1)组比较

for (j = 0; j <= 8 - n; j++)//每组进行(10减第几组)次比较

{

if (number[j] > number[j + 1])//比较大小并将小的赋给前面的数组

{

k = number[j];//将相对较大的元素赋值给中间元素

number[j] = number[j + 1];//将相对较小的元素送达前面一个位置

number[j + 1] = k;//将中间变量元素送给后面一个位置

}

if (New_number[j] < New_number[j + 1])//比较大小并将大的赋给前面的数组

{

k = New_number[j + 1];//将相对较小的元素赋值给中间元素

New_number[j + 1] = New_number[j];//将相对较大的元素送达前面一个位置

New_number[j] = k;//将中间变量元素送给后面一个位置

}

}

printf("min-->max:\n");//文字提示

for (m = 0; m <= 9; m++)//依次从小到大输出

printf("%d ", number[m]);//输出元素

printf("\n");

printf("max-->min:\n");//文字提示

for (m = 0; m <= 9; m++)//依次从大到小输出

printf("%d ", New_number[m]);//输出元素

printf("\n");

return 0;

}

程序运行结果如下:

扩展资料:

其他简单实现程序:

#include<stdioh>

int main()

{

int a[10]={0};

int i,j,temp;

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

{

scanf("%d",&a[i]);

}

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

{

for(j = 0;j<10-i-1;j++)

{

if(a[j]>a[j+1])

{

temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

}

}

}

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

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

return 0;

}

#include<stdioh>

void main(){

int i,j,score[10],count=0,temp,sum=0;

double avg;

for(i=0;i<10;i++){ //输入10个学生的成绩,并求着10个学生的成绩总和

printf("请输入第%d个学生的成绩:",(i+1));

scanf("%d",&score[i]);

sum+=score[i];

}

avg=sum10/10; //求着这10个学生成绩的平均值

for(i=0;i<10;i++){ //统计小于平均分的学生人数

if(score[i]<avg){

count++;

}

}

for(i=0;i<10;i++){ //使用冒泡排序对这10个学生的成绩逆序排序

for(j=0;j<9-i;j++){

if(score[j]<score[j+1]){

temp=score[j];

score[j]=score[j+1];

score[j+1]=temp;

}

}

}

printf("最高成绩:%d分,平均成绩:%2f分,低于平均成绩的人数是:%d人!\n",score[0],avg,count);

}

以上就是关于编写java程序:输入N个数字,对其进行从小到大排序全部的内容,包括:编写java程序:输入N个数字,对其进行从小到大排序、编一个程序,用同一个函数名对n个数据进行从小到大排序、编写C语言程序,把一个数组按从小到大的次序排列起来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存