实现思路:就是输入的数字之间有固定的规则,之后读取后,依次进行大小比较,之后直到排序结束,输出结果即可:
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语言程序,把一个数组按从小到大的次序排列起来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)