冒泡排序和选择排序 , 是第一小阶段知识里逻辑整合的典范.
冒泡排序 : 在双重循环中 , 让数组中的每一个元素与后一个相邻元素作比较 , 满足了条件时 , 就将它向后调换位置 ( 比如要从小到大排列 , 条件就是数组 a [ ] 中 if ( 前者a[ i ] > 后者a[ i+1 ] )就将它向后移动一个位置 )
选择排序 : 同样是双循环 , 在一轮中让每一个元素都与所有的元素依次序比较大小 , 如果满足条件 , 就交换,直到它到达最后一个位置
区别: 冒泡排序只比较相邻的元素 , 选择排序将一个元素与所有元素全部比较一遍 . 相比之下 , 冒泡排序更节省资源
/* 例 : 给定一个数组 a[ ] , 将它由大到小排序 */
//先随便定义一个数组
int [ ] a = { 1 , 33 , 6 , 289 , 8 , 145 , 34 , 2 };
//冒泡排序:
for( int i = 0 ; i < a.length-1 ; i++){ //这一行代表前一个元素,它的范围是 : 数组第一个~~倒数第二个
for( int j = i+1 ; j < a.length-i-1; j++){ //这一行代表相邻的元素, 它最尾是数组最后一个
if( a[i] ){ //这一部分表示每次前者大于后者,就将他们交换位置
int temp = a[ i ] ;
a[ i ] = a[ j ];
a[ j ] = temp;
}
}
}
//选择排序:
for(int i = 0 ; i< a.length-i ; i++){ //每一次循环拿出一个元素
for( int j= i+1; j< a.length ; j++){ //要与所有元素都比较一次
if( a[i] ){ //每次前者大于后者,就将他们交换位置
int temp = a[ i ] ;
a[ i ] = a[ j ];
a[ j ] = temp;
}
}
}