public class ArrayDemo06
{
public static void main(String args[])
{
int score[] = { 67, 89, 87, 69, 90, 100, 75 }; // 使用静态初始化声明数组
for (int i = 0; i <=score.length-1; i++)
{
for (int j = 0; j <= score.length-1; j++)
{
if (score[i] < score[j])
{ // 交换位置
int temp = score[i]; // 中间变量
score[i] = score[j];
score[j] = temp;
}
}
}
for (int i = 0; i <= score.length-1; i++)
{ // 循环输出
System.out.print(score[i] + "\t");
}
}
}
对这道程序,我一看完还不知道是从小到大,还是从大到小的顺序排序?从哪里可以看出,能说下详细的执行过程吗?请大家指点,这样的问题虽然是老生常谈了,但我一直就这样含糊过来的,悲啊!
{
public static void main(String args[])
{
int score[] = { 67, 89, 87, 69, 90, 100, 75 }; // 使用静态初始化声明数组
for (int i = 0; i <=score.length-1; i++)
{
for (int j = 0; j <= score.length-1; j++)
{
if (score[i] < score[j])
{ // 交换位置
int temp = score[i]; // 中间变量
score[i] = score[j];
score[j] = temp;
}
}
}
for (int i = 0; i <= score.length-1; i++)
{ // 循环输出
System.out.print(score[i] + "\t");
}
}
}
对这道程序,我一看完还不知道是从小到大,还是从大到小的顺序排序?从哪里可以看出,能说下详细的执行过程吗?请大家指点,这样的问题虽然是老生常谈了,但我一直就这样含糊过来的,悲啊!
{ // 交换位置
==>你这是把小的换到后面去了 所以是从大到小了
能说下详细的执行过程你自己手动的执行一次,画出每一遍的图,就知道过程了,想不出来,就画出来,
如果第一个元素score[i] 小于他后面的元素score[j], 那么就把score[i]和score[j]的位置交换
交换的步骤是 先把score[i]赋值给temp,再把score[i]赋值给score[i],最后把temp里的以前的score[i]的值给score[j]temp <- score[i]; score[i] <- score[j]; score[j] <- temp;
让第一个元素与这个数组中的所以元素比较然后符合条件的互换。接着对第二个元素做同样的事情....直到i>score.length-1就是这么一个排序的过程,楼主慢慢理会。
int[] d = {52,34,11,68,2,44};
for(int i = 0 ;i<d.length-1;i++){
for(int j= i+1;j<d.length;j++){
if(d[i]<d[j]){
int t = d[i];
d[i] = d[j];
d[j] = t;
}
}
}
for(int l:d){
System.out.println(l);
}
}看看这个 容易理解 冒泡 的思想
你写的循环不对 不适合理解
{
public static void main(String args[])
{
int score[] = { 67, 89, 87, 69, 90, 100, 75 }; // 使用静态初始化声明数组
for (int i = 0; i <=score.length-1; i++)
{
for (int j = i+1; j <= score.length-1; j++)
{
if (score[i] < score[j])
{ // 交换位置
int temp = score[i]; // 中间变量
score[i] = score[j];
score[j] = temp;
}
}
}
for (int i = 0; i <= score.length-1; i++)
{ // 循环输出
System.out.print(score[i] + "\t");
}
}
}
这是怎么样的.....................................
我上面的回答错了
在这里插播科普知识一条: 袁承志知道若再谦逊,那就是瞧人不起,展开五行拳,发拳当胸打去。荣彩和旁观三人本来都以为他武功有独到之秘,哪知使出来的竟是武林中最寻常不过的五行拳。敌对三人登时意存轻视,温青脸上不自禁露出失望的神色。“荣彩心中暗喜,双拳如风,连抢三下攻势,满拟自己的大力魔爪手江南独步,三四招之间就可破去对方五行拳,那知袁承志轻描淡写的一一化解。再拆数招,荣彩暗暗吃惊,原来对方所使虽是极寻常的拳术,但每一招均是含劲不吐,意在拳先,举手抬足之间隐含极浑厚的内力。
for (int j = 0; j <= score.length-i; j++)
把1改成i
如果内循环是j=i的话就是从大到小
这个过程比冒泡还要耗时N*N
,,服了写这个程序的人。。随便改成较正常的冒泡,供对比。。
public class ArrayDemo06
{
public static void main(String args[])
{
int score[] = { 67, 89, 87, 69, 90, 100, 75 }; // 使用静态初始化声明数组
for (int i = 0; i <=score.length-1; i++)
{
for (int j = 0; j < score.length-1-i; j++)
{
if (score[j] < score[j+1])
{ // 交换位置
int temp = score[j]; // 中间变量
score[j] = score[j+1];
score[j+1] = temp;
}
}
}
for (int i = 0; i <= score.length-1; i++)
{ // 循环输出
System.out.print(score[i] + "\t");
}
}
}
应该是j=i+1;
看交换那里
如果是<交换 就是从达到小
如果是>交换 祭师从小到大
我也是刚学java
努力吧
自学万岁...........public class Circle {
public static void main(String args[]) {
int score[] = { 67, 89, 87, 69, 90, 100, 75 }; // 使用静态初始化声明数组
for (int i = 0; i <= score.length - 1; i++) {
for (int j = i+1; j <= score.length - 1; j++) {
if (score[i] < score[j]) { // 交换位置
int temp = score[i]; // 中间变量
score[i] = score[j];
score[j] = temp;
}
}
}
for (int i = 0; i <= score.length - 1; i++) { // 循环输出
System.out.print(score[i] + "\t");
}
}
}