java 简单排序_简单排序之java实现

3种顺序排序方法。简单排序是指时间复杂度为O(n^2)的排序方法。

1)选择排序

将某个特定值有序的放置在最终位置上---外层循环控制最终位置的序号,内层循环从外层循环序号处向后遍历,找到最小值。

2)插入排序

插入排序将某个特定值插入到值列的某个子集中,并重复该过程---外层循环控制要插入的数据(从第二个数到最后一个),内层循环控制前面已排好序的的值后移。

3)冒泡排序

重复比较相邻的两个元素,并在必要的时候交换双方位置。---外层循环控制每次冒泡到达的最终位置,内层循环交换元素

4)其他:这里写的是一个通用的排序算法,不光是对数值排序,可以对对象排序。对象实现Comparable接口,对象就可以参与比较进行排序。

在对对象进行排序的方法中,就可以调用对象的public int compareTo(Object other)方法来比较对象的先后顺序。

一个可以比较先后顺寻的Student类(按照score大小顺序):

classStudentimplementsComparable{privateString name;privatedoublescore;publicStudent(String name,doublescore)

{this.name=name;this.score=score;

}publicintcompareTo(Object other) {intresult;if(score>((Student) other).score)return1;elseif(score

}publicString toString(){

String result="";

result=name+""+score;returnresult;

}

}

三种排序方法:

1 packageSort;2 3 publicclassSimpleSort {4 5 6 publicstaticvoidmain(String[] args) {7 8 Student[] student=newStudent[7];9 10 student[0]=newStudent("aa",90.32);11 student[1]=newStudent("bb",70.32);12 student[2]=newStudent("cc",85.32);13 student[3]=newStudent("dd",64.32);14 student[4]=newStudent("ee",91.32);15 student[5]=newStudent("ff",74.32);16 student[6]=newStudent("gg",79.32);17 18 //selectionSort(student);19 insertSort(student);20 //bubbleSort(student);21 22 for(inti=0;i 0 && position > 0)55 while(position>0&&data[position-1].compareTo(key)>0)56 {57 data[position]=data[position-1];58 position--;59 }60 data[position]=key;61 }62 }63 64 65 //冒泡排序66 publicstaticvoidbubbleSort(Comparable[] data){67 68 intposition,scan;69 Comparable temp;70 for(position=data.length-1;position>=0;position--)//外层循环控制每趟冒泡到的最终位置71 {72 for(scan=0;scan<=position-1;scan++)//内层循环不断交换相邻两个元素73 {74 if(data[scan].compareTo(data[scan+1])>0)75 {76 temp=data[scan];77 data[scan]=data[scan+1];78 data[scan+1]=temp;79 }80 }81 }82 }83 84 }

注意插入排序的内层循环开始写成了这样while(data[position-1].compareTo(key) > 0 && position > 0),运行起来会导致数组越界的异常。且表达式的判断要把最先决条件放在前面,这一点容易忽略。

运行结果,将数组重新排列了---

dd  64.32

bb  70.32

ff  74.32

gg  79.32

cc  85.32

aa  90.32

ee  91.32

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值