用冒泡排序法对给定数组元素从大到小次序排序并输出排序的结果.请帮忙编写一下程序,给分!!!

sexguns 2004-05-12 04:59:46
用冒泡排序法对给定数组元素从大到小次序排序并输出排序的结果.
请各位百忙之余帮一下小忙,谢谢先!!!

...全文
5182 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sylmoon 2004-05-14
  • 打赏
  • 举报
回复
學習JAVA應該用對象传递来编程序了,但把数组做为对象传递我还不熟悉

不过java是传值调用,和c传引用不一样
sylmoon 2004-05-14
  • 打赏
  • 举报
回复
我原先寫的冒泡排序的編程日記:
先来看看最基本的数组排序——冒泡排序。比如我们有一个数组为: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]1

1 times:2, 29, 57, 42, 34, 16, 1, 89

2 times: 2, 29, 42, 34, 16, 1, 57, 89

3 times: 2, 29, 34, 16, 1, 42, 57, 89

4 times: 2, 29, 16, 1, 34, 42, 57, 89

5 times: 2, 16, 1, 29, 34, 42, 57, 89

6 times: 2, 1, 16, 29, 34, 42, 57, 89

7 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





sylmoon 2004-05-14
  • 打赏
  • 举报
回复
对于冒泡排序,我基本研究过一段时间,那是在学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 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]);

}

}
}
swankiecsdn 2004-05-13
  • 打赏
  • 举报
回复
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];
}
oxv 2004-05-12
  • 打赏
  • 举报
回复
通过设置一个临时参数和循环几次就可以了
Acylas 2004-05-12
  • 打赏
  • 举报
回复
jdk 的demo里面有,demo/applet/SortDemo

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧