用冒泡排序法对给定数组元素从大到小次序排序并输出排序的结果.请帮忙编写一下程序,给分!!! jdk 的demo里面有,demo/applet/SortDemo 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int a[]=new int[5];int i=0,j=0,t=0,ti=0;for( ;i<5;i++){ t=a[i]; for (j=i+1;j<5;j++){ if (a[j]>t){ t=a[j]; ti=j; } } a[i]<-->a[ti];} 对于冒泡排序,我基本研究过一段时间,那是在学c的时候,但现在也是能很快写出来.最基本的冒泡排序:public class BubbleSort{ public static void main(String[] args) { int [] a={12, 8, 9, 6, 10, 3}; int temp=0; for( int i=0; i<= a.length-1; i++) { System.out.print("\t"+a[i]); } System.out.println(); //Bubble(a[i]); for(int i=0; i<= a.length-1; i++){ for( int j=0; j>=a.length-2; j-- )//最基本的冒泡排序,注意这里! if (a[j]>=a[j+1]){ temp=a [j]; a[j]=a[j+1]; a[j+1]=temp; }} for( int i=0; i<= a.length-1; i++) { System.out.print("\t"+a[i]); } }}// Programing withpublic class BubbleSort{ public static void main(String[] args) { int [] a={12, 8, 9, 6, 10, 3}; int temp=0; for( int i=0; i<= a.length-1; i++) { System.out.print("\t"+a[i]); } System.out.println(); //Bubble(a[i]); for(int i=0; i<= a.length-1; i++){ for( int j=a.length-2; j>=i; j-- )//改进了这里 if (a[j]>=a[j+1]){ temp=a [j]; a[j]=a[j+1]; a[j+1]=temp; }} for( int i=0; i<= a.length-1; i++) { System.out.print("\t"+a[i]); } }} 我原先寫的冒泡排序的編程日記:先来看看最基本的数组排序——冒泡排序。比如我们有一个数组为:2,57,29,89,42,34,16,1。通过冒泡——大的沉下去,小的浮上来的原理,分别比较相邻的值,大的往后排。如果相邻的两个值是升序排列的,就保持原样,如果是降序排列的,就交换它们的值:start : a[0]2, a[1]57, a[2]29, a[3]89, a[4]42, a[5]34, a[6]16,a[7]11 times:2, 29, 57, 42, 34, 16, 1, 892 times: 2, 29, 42, 34, 16, 1, 57, 893 times: 2, 29, 34, 16, 1, 42, 57, 894 times: 2, 29, 16, 1, 34, 42, 57, 895 times: 2, 16, 1, 29, 34, 42, 57, 896 times: 2, 1, 16, 29, 34, 42, 57, 897 times: 1, 2, 16, 29, 34, 42, 57, 89我们可以用两个循环来控制排序,一个控制趟数,一个控制每趟的排序。控制趟数是 1 to 7控制每趟的比较次数也是1 to 7推广一下:有n个项的数组,如果要实行冒泡排序,最多排n-1次,每次比较n-1次。经过我们自己的思考+书上的提示,写下了冒泡排序的源程序: #include <stdio.h>#include <conio.h>#define SIZE 8 main(){ int a[SIZE]={2,57,29,89,42,34,16,1}; int i, pass, hold; clrscr(); for(i=0;i<=SIZE-1;i++) printf("%4d", a[i]); printf("\n"); for(pass=1;pass<=SIZE-1;pass++) /*比较趟数*/ for(i=0;i<=(SIZE-1-1);i++)/*比较一趟*/ if(a[i]>a[i+1]){ hold=a[i]; a[i]=a[i+1]; a[i+1]=hold;} for(i=0;i<=SIZE-1;i++) printf("%4d",a[i]); return 0;} 根据我们找的关系,比较一趟的时候不应该是SIZE-1吗?!这是考虑到的数组下标的问题,我也没那么弱智把SIZE-2写成SIZE-1-1,是为了增加我们对冒泡排序的理解!比如,当i=6的时候,不是比较了a[6]和a[7]么? 再想想,不这么写,非要写SIZE-1,可以么?我想也差不多吧,但那样很麻烦,就是如何处理数组下标呢?其实我们开始考虑问题的时候就该考虑如何进行比较,我们刚才过重研究了趟数的问题了! 运行结果如: 2 57 29 89 42 34 16 1 1 2 16 29 34 42 57 89 完成了我们排序的目的。 原先学习过一次冒泡排序了,不过那回没有真正地理解,这回是比上次理解得深了,我们看别人得程序不要死记硬背,首先要理解,要不是没有用处的,哪怕象这次一样一行行分析过程呢。7:06 02-6-4 學習JAVA應該用對象传递来编程序了,但把数组做为对象传递我还不熟悉不过java是传值调用,和c传引用不一样 JAVA里的泛型 求教~~swing中如何显示html的table标签 学习关于泛型和容器的问题 java swt win32 访问注册表 Solaris系统下Java多线程编程的问题 怎么判断List中是否有数据? 正则表达式匹配 求救,看看这个程序那错了。。。 我想往磁盘上写一个XML文件,怎么就是写不上呢? 谁能给我很细致的解释一下下面的冒泡算法。。。新手救助! 在一个程序里先编译、后执行另外一个.java文件,该怎样写? 如何获取一个网页的源代码?
int i=0,j=0,t=0,ti=0;
for( ;i<5;i++){
t=a[i];
for (j=i+1;j<5;j++){
if (a[j]>t){
t=a[j];
ti=j;
}
}
a[i]<-->a[ti];
}
public static void main(String[] args)
{
int [] a={12, 8, 9, 6, 10, 3};
int temp=0;
for( int i=0; i<= a.length-1; i++)
{
System.out.print("\t"+a[i]);
}
System.out.println();
//Bubble(a[i]);
for(int i=0; i<= a.length-1; i++){
for( int j=0; j>=a.length-2; j-- )//最基本的冒泡排序,注意这里!
if (a[j]>=a[j+1]){
temp=a [j];
a[j]=a[j+1];
a[j+1]=temp;
}}
for( int i=0; i<= a.length-1; i++)
{
System.out.print("\t"+a[i]);
}
}
}
// Programing with
public class BubbleSort{
public static void main(String[] args)
{
int [] a={12, 8, 9, 6, 10, 3};
int temp=0;
for( int i=0; i<= a.length-1; i++)
{
System.out.print("\t"+a[i]);
}
System.out.println();
//Bubble(a[i]);
for(int i=0; i<= a.length-1; i++){
for( int j=a.length-2; j>=i; j-- )//改进了这里
if (a[j]>=a[j+1]){
temp=a [j];
a[j]=a[j+1];
a[j+1]=temp;
}}
for( int i=0; i<= a.length-1; i++)
{
System.out.print("\t"+a[i]);
}
}
}
先来看看最基本的数组排序——冒泡排序。比如我们有一个数组为:2,57,29,89,42,34,16,1。通过冒泡——大的沉下去,小的浮上来的原理,分别比较相邻的值,大的往后排。如果相邻的两个值是升序排列的,就保持原样,如果是降序排列的,就交换它们的值:start : a[0]2, a[1]57, a[2]29, a[3]89, a[4]42, a[5]34, a[6]16,a[7]11 times:2, 29, 57, 42, 34, 16, 1, 892 times: 2, 29, 42, 34, 16, 1, 57, 893 times: 2, 29, 34, 16, 1, 42, 57, 894 times: 2, 29, 16, 1, 34, 42, 57, 895 times: 2, 16, 1, 29, 34, 42, 57, 896 times: 2, 1, 16, 29, 34, 42, 57, 897 times: 1, 2, 16, 29, 34, 42, 57, 89我们可以用两个循环来控制排序,一个控制趟数,一个控制每趟的排序。控制趟数是 1 to 7控制每趟的比较次数也是1 to 7推广一下:有n个项的数组,如果要实行冒泡排序,最多排n-1次,每次比较n-1次。经过我们自己的思考+书上的提示,写下了冒泡排序的源程序: #include <stdio.h>#include <conio.h>#define SIZE 8 main(){ int a[SIZE]={2,57,29,89,42,34,16,1}; int i, pass, hold; clrscr(); for(i=0;i<=SIZE-1;i++) printf("%4d", a[i]); printf("\n"); for(pass=1;pass<=SIZE-1;pass++) /*比较趟数*/ for(i=0;i<=(SIZE-1-1);i++)/*比较一趟*/ if(a[i]>a[i+1]){ hold=a[i]; a[i]=a[i+1]; a[i+1]=hold;} for(i=0;i<=SIZE-1;i++) printf("%4d",a[i]); return 0;} 根据我们找的关系,比较一趟的时候不应该是SIZE-1吗?!这是考虑到的数组下标的问题,我也没那么弱智把SIZE-2写成SIZE-1-1,是为了增加我们对冒泡排序的理解!比如,当i=6的时候,不是比较了a[6]和a[7]么? 再想想,不这么写,非要写SIZE-1,可以么?我想也差不多吧,但那样很麻烦,就是如何处理数组下标呢?其实我们开始考虑问题的时候就该考虑如何进行比较,我们刚才过重研究了趟数的问题了! 运行结果如: 2 57 29 89 42 34 16 1 1 2 16 29 34 42 57 89 完成了我们排序的目的。 原先学习过一次冒泡排序了,不过那回没有真正地理解,这回是比上次理解得深了,我们看别人得程序不要死记硬背,首先要理解,要不是没有用处的,哪怕象这次一样一行行分析过程呢。7:06 02-6-4