1 原理分析
- 对一组数据,依次比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。 (升序排列,即从小到大排列)
- 对一组数据,依次比较相邻数据的大小,将值大数据在前面,值小的数据放在后面。 (降序排列,即从小到大排列)
2 数据原理
对于数组 int[] array={3,2,5,8,7};
- 第一轮排序:
-
- 第一次比较 3和2比较 结果:2 3 5 8 7
-
- 第二次比较 3和5比较 结果:2 3 5 8 7
-
- 第三次比较 5和8比较 结果:2 3 5 8 7
-
- 第四次比较 8和7比较 结果:2 3 5 7 8
第一轮排序结果 2 3 5 7 8
-
第二轮排序:
-
- 第一次比较 3和2比较 结果:2 3 5 7 8
-
- 第二次比较 3和5比较 结果:2 3 5 7 8
-
- 第三次比较 5和8比较 结果:2 3 5 7 8
-
第三轮排序:
-
- 第一次比较 3和2比较 结果:2 3 5 7 8
-
- 第二次比较 3和5比较 结果:2 3 5 7 8
-
第四轮排序:
-
- 第一次比较 3和2比较 结果:2 3 5 7 8
3 从java代码角度(Android,OC)
3.1 java 升序
实质是先把最大的数排列在了最右边
//外层循环控制循环的轮数
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-i-1;j++){
//比较两相邻的数的大小
if(array[j]>array[j+1]){
//交换数据
int temp =array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
3.2 java 降序
实质是先把最小的数排在了最右边
//外层循环控制循环的轮数
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-i-1;j++){
//比较两相邻的数的大小
if(array[j]<array[j+1]){
//交换数据
int temp =array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}