求解JAVA编程题:编写一个程序选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行由大到小的顺序

作者&投稿:须晴 (若有异议请与网页底部的电邮联系)
(用JAVA语言)编写一个程序用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行由大到小的排序。~

public class Demo {
public static void main(String args[]) {
int arr[] = {20,10,50,40,30,70,60,80,90,100};
System.out.println("数组由大到小排序前:");
for(int num : arr) {
System.out.print(num + "、");
}
//使用冒泡排序法,将数组由大到小进行排序
for(int i = 0;i < arr.length-1;i++) {
for(int j = 0;j < arr.length-i-1;j++) {
int temp = arr[j];
if(temp < arr[j+1]) {
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println("
数组由大到小排序后:");
for(int num : arr) {
System.out.print(num + "、");
}
}
} 这个行么?

public class C {

public static void main(String[] args) {
int[] ary = {20,10,50,40,30,70,60,80,90,100};

sort(ary);
System.out.println("After sort, array item is: ");
for(int i = 0; i < ary.length; i++){
System.out.print(ary[i] + " ");
}

}

private static void sort(int[] ary) {

for(int i = 0; i < ary.length - 1; i++){

for(int j = i + 1; j < ary.length; j++){
if(ary[j] > ary[i]){
int temp = ary[i];
ary[i] = ary[j];
ary[j] = temp;
}
}

}
}

}

------------------testing
After sort, array item is:
100 90 80 70 60 50 40 30 20 10

/**
* 选择排序。
*
* @param ints
* 要排序的数组。
* @return 返回排序后的数组。如果数组为空或数组长度小于等于1,则直接返回传入的数组对象。
*/
public static int[] choose(final int[] ints)
{

if (ints == null)
{// 如果数组为空,不进行排序操作。
return ints;
}

int count = ints.length;// 数组的长度。

if (count <= 1)
{// 如果数组长度为小于等于1,没有排序的必要。
return ints;
}

int j = 0;// 用于循环中第二层循环的计数变量。
int minIndex = 0;// 最小数值的下标,用于循环中存放最小数的下标值。

// 假定第i数是余下数中最小的数。前边i-1个数已经排列好了。第一个数不需要计入选择的列表。
for (int i = 1; i < count; i++)
{
minIndex = i;// 假定当前循环起始值为余下数中最小的。
for (j = i + 1; j < count; j++)
{
if (ints[minIndex] > ints[j])
{
minIndex = j;// 如果假定的最小值大于当前数,则改变最小值下标的值。
}
}

if (ints[minIndex] < ints[i - 1])
{// 如果余下数中最小的数比假定的最小的数小,则交换位置。
swap(ints, i - 1, minIndex);
}
}

return ints;
}
/**
* 交换数组中的两个位置上的数据。如果数组的长度小于等于1、 要交换的下标比数组长度大或小等于0,则没有交换的意义。
*
* @param ints
* 要交换数据的数组。
* @param i
* 要交换的第一个位置。
* @param j
* 要交换的第二个位置。
*/
public static void swap(final int[] ints, final int i, final int j)
{

int count = ints.length;// 数组的长度

// 如果数组的长度小于等于1、i与j相等、i或j比数组的长度大或小于0,则没有交换的意义,直接返回。
if ((count <= 1) || (i == j) || (i <= -1) || (j <= -1) || (i >= count)
|| (j >= count))
{
return;
}

// 交换数组中的两个不同位置下标的值。
ints[i] += ints[j];
ints[j] = ints[i] - ints[j];
ints[i] -= -ints[j];
}

public class ArraySort
{ public void sortArr(int[] arr,int len)
{ int tem=0;
for(int i=0;i<len;i++)
{ for(int j=len-1;j>=i+1;j--)
{ if(arr[j]<arr[j-1])
{ tmp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=tmp;
}
}
}
}
public void print(int[]arr,int len)
{ for(int i=1;i<=len;i++)
{ System.out.print(arr[i-1]="\t");
}
}
}

public class SortDemo {
public static void main(String[] args) {
int[] a = {20,10,50,40,30,70,60,80,90,100};
for (int i = a.length - 1; i >= 0; i--) {
for (int j = 0; j < i; j++) {
if(a[j] > a[j+1]){
int temp;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}

}
System.out.println(a[i]);
}

}

}

Java 编程题,定义一个时钟类(Clock)
答:class Clock{ private int hourse;private int minute;private int second;public Clock(){ this.hourse=0;this.minute=0;this.second=0;} public void incSecond(){ this.second+=1;} public void toTime(){ if(this.hourse>24){this.hourse=0;} if(this.minute>60){this.hourse+=1;this....

一个简单的JAVA编程题,跪求急等,后天交作业。
答:一个简单的JAVA编程题,跪求急等,后天交作业。 汽车在高速公路上比在普通公路上费油。一个名为汽油计算的程序要计算,一辆汽车在一整段路程(既有高速路也有普通路)上消耗了多少。这个程序给定了以下的条件。1.在普通公路上消耗汽... 汽车在高速公路上比在普通公路上费油。一个名为汽油计算的程序要计算,一辆汽车...

Java 基础编程题求解,不是很懂
答:第三种:让用户输入一个字符串,数字按逗号分隔,然后判断其中有多少数字余数为5 //实现输入一个字符窜数字集合数字以逗号分隔public static void testString(){System.out.println("请输入数据边界值:");//获取输入数字Scanner sc = new Scanner(System.in);String s = sc.next();if(s != ...

JAVA编程题全集(100题及答案)
答:Java程序设计总复习题1、编写一个Java程序在屏幕上输出“你好!”。(p13,例1-1)//programmenameHelloworld.javapublicclassHelloworld{publicstaticvoidmain(Stringargs[]){System.out.print("你好!");}}2.编写一个Java程序,用if-else语句判断某年份是否为闰年。//ProgrammeNameLeapYear.javapublic...

java作业编程题,求java大神帮忙解答,要求一定要用while,for,do whil...
答:for(int i=1;i<=10;i++){ n+= n*(0.05);System.out.println("第"+i+"年的学费是:"+n);if(i<=4){ sum+= n;} } System.out.println("第4年内的总学费是"+sum);} //4)编写程序,提示用户输入学生的个数、每个学生的名字及其分数,最后显示最高分学生的名字。public static...

java简单编程题,有追加分
答:第一题,x和n从命令行作为参数输入:public class Test1{ public static void main(String[] args){ int argLen = args.length;//判断是否至少传入了两个参数 if (argLen < 2){ System.out.println("请输入两个整型参数");return;} int x = 0;int n = 0;//转换传递进来的参数,如果...

5道简单的JAVA编程题(高分悬赏)
答:编写完程序的后缀名是.java,如本题,文件名就是One.java。开始\运行\cmd,进入“命令提示符窗口”,然后用javac编译器编译.java文件,语句:javac One.java。(3)编译成功后,生成的文件名后缀是.class,叫做字节码文件。再用java解释器来运行改程序,语句:java One 2、编写程序,输出1到100间的...

JAVA 经典编程题,怎么写?
答:if (n == 1) { //如果只有一个盘子则直接把盘子从a 移到b System.out.println("move " + a + " to " + b);i++;} else { //超过一个盘子的情况 hanio( (byte) (n - 1), a, c, b); //将a杆上n-1个盘子借助于b先移到c杆 System.out.println("move " + a + " ...

java的编程题
答:程序如下,注意输入的数字后面如果带字母d或者f是合法的,因为float类型的数据后面可以加一个f,double类型的数据后面可以加一个d。import java.awt.*;import java.awt.event.*;import javax.swing.*;class MyCalculator extends JFrame{ private static final long serialVersionUID=1L;MyCalculator(...

java新手编程题目
答:思路如下:随即4个数字(1~6) 用来模拟4个色子 数字全部存入数组ary,.然后升序排列.如果满足两两相等,那么已经排序好的数字,就是ary[0]=ary[1]; ary[2]=ary[3];然后判断ary[0]+ary[2]==6 .如果等于6 那么满足要求,不等于6 ,那么继续下次循环 参考代码 import java.util.Arrays;public class...