下面是详细的攻略:
冒泡排序算法原理
冒泡排序算法是一种比较简单的排序方法,其基本原理是依次比较相邻的两个元素,将较大的元素向后移动,直到全部元素排序完成。冒泡排序算法的时间复杂度为O(n^2),虽然比较耗时,但由于其简单易懂的特点,经常被用于教学和入门练习。
java实现代码示例
以下是java实现的冒泡排序算法示例:
public static void bubbleSort(int[] arr){
int temp;
boolean flag;
for(int i=0; i< arr.length - 1; i++){
flag = false; //设置交换标志
for(int j=0; j< arr.length-1-i; j++){
if(arr[j] > arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = true; //发生了交换,标志为true
}
}
if(!flag){ //如果一次交换都没有发生,表示排序完成
break;
}
}
}
以上代码是采用java语言实现的冒泡排序算法。变量解释如下:
- arr:待排序的数组
- temp:用于交换的中间变量
- flag:交换的标志,初始值为false
该算法主要通过两层循环来实现:
- 外层循环遍历待排序的数组,重复执行内层循环,直至排序完成
- 内层循环用于比较相邻的两个元素,若前面的数大于后面的数,则进行交换,同时将交换标志置为true
- 如果内层循环一次都没有进行交换操作,则表示这次排序已经完成,直接跳出外层循环
示例说明
示例1
待排序数组为:[5, 3, 8, 1, 2, 9]
第一次排序:
- 比较5和3,发现5大于3,进行位置交换,数组为:[3, 5, 8, 1, 2, 9]
- 比较5和8,不交换位置
- 比较8和1,发现8大于1,进行位置交换,数组为:[3, 5, 1, 8, 2, 9]
- 比较8和2,发现8大于2,进行位置交换,数组为:[3, 5, 1, 2, 8, 9]
- 比较8和9,不交换位置
第一轮排序完成,结果为:[3, 5, 1, 2, 8, 9]
第二次排序:
- 比较3和5,不交换位置
- 比较5和1,发现5大于1,进行位置交换,数组为:[3, 1, 5, 2, 8, 9]
- 比较5和2,发现5大于2,进行位置交换,数组为:[3, 1, 2, 5, 8, 9]
- 比较5和8,不交换位置
- 比较8和9,不交换位置
第二轮排序完成,结果为:[3, 1, 2, 5, 8, 9]
第三次排序:
- 比较3和1,发现3大于1,进行位置交换,数组为:[1, 3, 2, 5, 8, 9]
- 比较3和2,发现3大于2,进行位置交换,数组为:[1, 2, 3, 5, 8, 9]
- 比较3和5,不交换位置
- 比较5和8,不交换位置
- 比较8和9,不交换位置
第三轮排序完成,结果为:[1, 2, 3, 5, 8, 9]
排序完成,最终结果为:[1, 2, 3, 5, 8, 9]
示例2
待排序数组为:[9, 8, 7, 6, 5]
第一次排序:
- 比较9和8,发现9大于8,进行位置交换,数组为:[8, 9, 7, 6, 5]
- 比较9和7,发现9大于7,进行位置交换,数组为:[8, 7, 9, 6, 5]
- 比较9和6,发现9大于6,进行位置交换,数组为:[8, 7, 6, 9, 5]
- 比较9和5,发现9大于5,进行位置交换,数组为:[8, 7, 6, 5, 9]
第一轮排序完成,结果为:[8, 7, 6, 5, 9]
第二次排序:
- 比较8和7,发现8大于7,进行位置交换,数组为:[7, 8, 6, 5, 9]
- 比较8和6,发现8大于6,进行位置交换,数组为:[7, 6, 8, 5, 9]
- 比较8和5,发现8大于5,进行位置交换,数组为:[7, 6, 5, 8, 9]
第二轮排序完成,结果为:[7, 6, 5, 8, 9]
第三次排序:
- 比较7和6,发现7大于6,进行位置交换,数组为:[6, 7, 5, 8, 9]
- 比较7和5,发现7大于5,进行位置交换,数组为:[6, 5, 7, 8, 9]
第三轮排序完成,结果为:[6, 5, 7, 8, 9]
第四次排序:
- 比较6和5,发现6大于5,进行位置交换,数组为:[5, 6, 7, 8, 9]
第四轮排序完成,结果为:[5, 6, 7, 8, 9]
排序完成,最终结果为:[5, 6, 7, 8, 9]
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现的冒泡排序算法示例 - Python技术站