复习一下简单冒泡排序
冒泡排序比较简单,只要懂得其原理很容易写出相应的代码。
- 重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。(来源百度百科)
根据冒泡排序的定义,我们要做的就是两两依次比较数组data中的数据
if(data[i] > data[i+1]){
temp = data[i] ;
data[i] = data[i+1] ;
data[i+1] = temp ;
}
长度为n的数组,最多需要比较n-1次,只要这个数组在一次循环中没发生过比较,就说明已排序完毕。为了知晓是否发生了比较,要设置一个标志变量flag,当flag的值没有改变就说明循环中未出现过比较,类设计如下:
public class BSort {
//冒泡排序
private int[] data = null ; //排序前
private int[] array = null ; //排序后
public BSort(int[] data){
this.setData(data) ; //初始化数据
this.dataToArray() ; //自动调用比较算法,可以不放在构造方法中
}
private void setData(int[] data){
this.data = data ;
}
public String getArray(){ //以字符串形式输出
String s = "排序结果为:" ;
for(int i = 0 ;i < this.array.length ;i++){
s = s + this.array[i] + " " ;
}
return s ;
}
private void dataToArray(){
for(int i = 1 ;i < data.length ;i ++){
int flag = 0 ;
for(int j = 0 ;j < data.length - 1 ;j ++){
if(this.data[j] > this.data[j+1]){
int temp = 0 ;
temp = this.data[j] ;
this.data[j] = this.data[j+1] ;
this.data[j+1] = temp ;
flag = 1 ;
}
}
if(flag == 0){
this.array = this.data ;
break ;
}
}
}
}
- 测试
public class Test {
public static void main(String[] args) {
System.out.println(new BSort(
new int[]{77,15,22,17,33,77,125})
.getArray());
}
}
- 测试结果
排序结果为:15 17 22 33 77 77 125
點擊查看更多內(nèi)容
15人點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦