冒泡排序:
循环一组数(n个),相邻的两个数比较 如果第一个数比第二个数大则第二个数与第一个数交换位置,直到按照从小到大的顺序排列;(循环n-1次)

排序方法 1(常规方法):
/**
* @author zdc
* 冒泡排序
* 说明: 循环一组数(n个),相邻的两个数比较 如果第一个数比第二个数大则第二个数与第一个数交换位置,直到按照从小到大的顺序排列;(循环n-1次)
*/
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {7,5,3,9,5,1,4,6,8,2,8,5};
if(arr != null && arr.length>0){
//循环要排序的次数
for (int i =0 ; i < arr.length-1;i++){
//循环比较的次数 每一轮比较次数
for (int j =0 ; j < arr.length-1;j++) {
// 比较相邻的两个大小
if( arr[j] > arr[j+1]){
// 定义临时变量
int tmp = arr[j] ;
// 交换两个数
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
System.out.print(" 排序结果 : ");
for (int k =0 ; k<arr.length;k++){
System.out.print( arr[k]+" ");
}
}
}
}
排序方法2--减少循环次数、降低排序时间
/**
* @author zdc
* 冒泡排序
* 说明: 改进后的算法,设置标记位pos , 通过循环pos位置之后的数均已排序到位,下次循环值需要循环到pos的位置,大大降低排序所需时间;
*/
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {7,5,3,9,5,1,4,6,8,2,8,5};
if(arr!=null && arr.length > 0){
// 初始化要循环的次数
int i = arr.length -1 ;
while(i>0){
// 定义两个数交换的位置
int pos = 0;
for(int j = 0 ; j < i ; j ++){
if(arr[j] > arr[j+1]) {
pos = j;
int tmp = arr[j] ;
arr[j] = arr[j+1] ;
arr[j+1] = tmp;
}
}
i =pos;
}
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j] + " ");
}
}
}
}
博客主要介绍了冒泡排序,即循环一组数,相邻两数比较,若前者大则交换位置,直至按从小到大排列,循环n - 1次。还提及了两种排序方法,一种是常规方法,另一种可减少循环次数、降低排序时间。
39万+

被折叠的 条评论
为什么被折叠?



