冒泡排序
冒泡排序原理:比較相鄰的元素,較小的放到前面,較大的放到后面
要理解冒泡排序首先要理解兩個(gè)元素互換
例如
int a = 10;
int b = 20;
如何才能讓a = 20;b = 10;如下代碼是不能實(shí)現(xiàn)的
int a = 10;
int b = 20;
a = b;//首先b = 20;然后把b的值賦值給a融涣,所以a = 20剥悟;
b = a;//這是a = 20; 然后把a(bǔ)的值20賦值給b。這個(gè)時(shí)候b的值也是20
思考:如果家里有兩個(gè)瓶子,1號(hào)瓶子裝水,2號(hào)瓶子裝油,那么如何才能讓1號(hào)瓶子裝油寂诱,2號(hào)瓶子裝水
解答:再找一個(gè)3號(hào)空瓶子,首先把1號(hào)瓶子的水倒入3號(hào)瓶子安聘,把2號(hào)瓶子的油倒入1號(hào)瓶子痰洒,最后吧3號(hào)瓶子的水倒入2號(hào)瓶子;這樣是不是就完成了互換了
所以
int a = 10;
int b = 20;
int c;
c = a;
a = b;
b = c
-冒泡排序的每一次內(nèi)層循環(huán)都會(huì)找到最小值
/**
* 冒泡排序
* @param args
*
* 6,2,4,1,5,9
* 第一次排序:
* 2,4,1,5,6,9 5
* 1 5
* 二次
* 2,1,4,5,6, 9 4
*
* 2 4
* 三次
* 1,2,4,5 3
* 3 3
*
* 4 3
*
* 五次
* 5 1
*
*
* 第一次排序:結(jié)果就是找到最大值
* 2 第2
* 3 3
* ……
* 5 5
*
*
*
* 5,4,3,2,1
* 1
* 4,3,2,1,5
*
* 2
* 3,2,1,4,5
*
* 3
* 2,1,3,4,5
*
* 4
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] arr = new int[]{5,4,3,2,1};
// 外層循環(huán)是排序的次數(shù) (i+1)
for(int i = 0; i < arr.length - 1; i ++){
//內(nèi)層循環(huán)浴韭,相當(dāng)于排序一次
// j = 0 j =4 j < 5
for(int j = 0; j < arr.length - 1 - i; j ++){
// 實(shí)現(xiàn)的就是相鄰元素進(jìn)行比較丘喻,大的放到后面,小的放到前面
if(arr[j] > arr[j+1]){
// 交換位置
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i = 0; i < arr.length; i ++){
System.out.print(arr[i]+"\t");
}
}
選擇排序
選擇排序的基本思想是將指定的排序位置與其他數(shù)組元素分別對(duì)比念颈,如果滿足條件就交換元素值
public static void main(String[] args){
int arr[] = {6,5,4,3,2,1,0};
/**
* 第一次拿下標(biāo)為0的和后面的元素依次進(jìn)行比較
* 1,6,5,2,4,9
*
* 繼續(xù)拿下標(biāo)為1
* 1 ,2,6,5
*
* 繼續(xù)拿下標(biāo)為2
*
* 繼續(xù)拿下標(biāo)為4 = arr.length -2
*/
for(int i = 0; i < arr.length - 1; i ++){
for(int j = i + 1; j < arr.length; j ++){
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
/**
* 數(shù)組名[下標(biāo)]
*/
for(int i=0;i<arr.length; i++){
System.out.print(arr[i]+"\t");
}
如果明白了泉粉,請(qǐng)贊賞,1分也是愛榴芳。
如果還是不理解嗡靡,看來需要視頻講解以及面對(duì)面一對(duì)一講解了(視頻+源碼 5元)
聯(lián)系方式QQ:1718202383
可接應(yīng)屆畢業(yè)生論文項(xiàng)目
可接外包項(xiàng)目