黑马程序员技术交流社区
标题:
冒泡排序 求解
[打印本页]
作者:
demown
时间:
2014-4-16 20:16
标题:
冒泡排序 求解
public class zsT {
public static void sum(int arr[]){
for(int x = 0;x < arr.length-1;x++){
for(int y = 0;y < arr.length-1;y++ ){
if(arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1]=temp ;}
}
}
}
public static void main(String[] args){
int arr[] ={1,8,3,7,0,6,4,5};
sum(arr);
}
}
错误: 在类 JDK5AhhotationTest.zsT 中找不到主方法, 请将主方法定义为:
public static void main(String[] args)
作者:
雨落千木的时节
时间:
2014-4-16 20:23
您的算法没有错,只是少了输出,写一个在控制台输出的方法即可:
例如:
public static void main(String[] args){
int arr[] ={1,8,3,7,0,6,4,5};
sum(arr);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
}
这是我在eclipse上运行的结果:0,1,3,4,5,6,7,8,
作者:
kuroro自走核炮
时间:
2014-4-16 20:27
我把你这个代码复制下来试了一下……运行正常……没有任何错误……
作者:
\(^o^)/
时间:
2014-4-16 20:45
#在这里快速回复#public static void main(String[] args)
作者:
\(^o^)/
时间:
2014-4-16 20:47
public static void main(String[] args)
{
int[] arr={1,8,3,7,0,6,4,5};
AD(arr);
printA(arr);
}
public static void AD(int[] aq)
{
for(int x=0;x<aq.length-1;x++)
{
for(int y=0;y<aq.length-x-1;y++)
{
if(aq[y]>aq[y+1])
{
int temp=aq[y];
aq[y]=aq[y+1];
aq[y+1]=temp;
}
}
}
}
public static void printA(int[] qqq)
{
System.out.print("[");
for(int x=0;x<qqq.length;x++)
{
if(x<qqq.length-1)
System.out.print(qqq[x]+",");
else
System.out.println(qqq[x]+"]");
}
}
作者:
四川男人
时间:
2014-4-16 20:55
算法没错,但是程序的如果模式是固定的,都是
public static void main(String[] args),你可以在main方法里调用排序的方法
作者:
千殇轮回
时间:
2014-4-16 21:27
class Arr
{
public static void main(String[] args)
{
int[] arr = new int[]{12,34,7,24,23,60,67,32,57,4};
selectArr(arr);
}
//冒泡排序
public static void selectArr(int[] arr)
{
//用于记录排序的次数
int count = 0;
//排序数组
for (int i=0;i<arr.length-1;i++)
{
for (int j=0;j<arr.length-1-i;j++ )
{
if (arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
count++;
System.out.println("第"+count+"次排序");
//遍历每次排序后的数组,能让我们看清每次数组是怎么排序的
for (int k=0;k<arr.length;k++)
{
System.out.print(arr[k]+" ");
}
//用于换行
System.out.println();
}
}
}
复制代码
这个怎么样?你的好像没有输出
作者:
ithmC4
时间:
2014-4-16 21:34
你冒泡算法的循环条件不地道,再加个输出方法就行了:
public class MyMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {1,8,3,7,0,6,4,5};
bubbleSort(arr);
printArray(arr);
}
public static void bubbleSort(int[] arr) {
for(int i=0, len=arr.length-1; i<len; i++) {
//注意这第二层循环的循环条件
for(int j=0; j<len-i; j++) {
if(arr[j]>arr[j+1]) {
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
//这是自己写的输出方法
public static void printArray(int[] arr) {
System.out.print("{");
for(int i=0, len=arr.length-1; i<len; i++) {
System.out.print(arr[i] + ", ");
}
System.out.println(arr[arr.length-1] + "}");
}
}
复制代码
作者:
宋大龙
时间:
2014-4-19 00:03
老师上课都讲的东西 还有视频里都有 对比下嘛 刚开始学就照着老师的写
作者:
vtming
时间:
2014-4-19 00:59
首先根据你的错误提示:类 JDK5AhhotationTest.zsT 没有主方法。
你运行的是JDK5AhhotationTest.zsT 类。和你贴出来代码的出处是同一个源文件吗?
其次:你这个代码,没有显示输出语句。
作者:
天涯追梦
时间:
2014-4-19 13:41
楼主好像还是对冒泡不够了解,它是通过两个for循环实现大数逐渐的下沉,外层for每比较一次,大数每下沉一次,所以内层没必要每次都全比较大小,写成for(int y = 0;y < arr.length-x-1;y++ )即可。。
再者,楼主没有实现数组输出语句,当然不会有数组输出,
下面是我对楼主代码的简单修改,
public class Test {
public static void sum(int arr[]){
for(int x = 0;x < arr.length-1;x++){
for(int y = 0;y < arr.length-x-1;y++ ){
if(arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1]=temp ;}
}
}
}
public static void main(String[] args){
int arr[] ={1,8,3,7,0,6,4,5};
sum(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
}
复制代码
作者:
范国征
时间:
2014-4-19 22:27
我感觉你的排序算法好像有问题吧?这个是老师上课讲的。
for(int i=0;i<a.length-1;i++) //总共比较a.length-1 趟;
{
for(int j=0;j<a.length-i-1;j++) //第一趟比较四次,第二趟比较三次,第三趟比较两次,第四趟比较一次;
//-i的意思是让每一次的比较次数减少,-1的意思是避免比到最后脚标越界。
{
if(a[j]>a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
作者:
彭飞
时间:
2014-4-20 15:20
本帖最后由 彭飞 于 2014-4-20 15:21 编辑
我一眼看出来的错误是,第2个for循环里的条件表达式,应该是i<arr.length-1-i;
原理上面的童鞋说了,下面告诉你我的一个
冒泡排序法的一个小技巧:
记住圈外是长度-1,圈内是长度-1-i。
;i<arr.length-1;
;i:arr.length-1-i;
相信你不会再错了。
作者:
idream
时间:
2014-4-20 21:00
好像没有错误吧,但是效率低一些,提供效率方法是:
for(int x = 0;x < arr.length-1;x++){
for(int y = 0;y < arr.length-1-x;y++ ){ //在这加上 -x ,提供效率
if(arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1]=temp ;}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2