冒泡排序
1.基本思想
冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。
2.算法示例
冒泡算法由双层循环实现,其中外层循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内层循环主要用于对比数组中每个邻近元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。例如,一个拥有6个元素的数组,在排序过程中每一次循环的排序过程和结果如下图所示
第一轮外层循环时把最大的元素值63移动到了最后面(相应地,比63小的元素向前移动,类似气泡上升),第二轮外层循环不再对比最后一个元素值63,因为它已经被确认为最大(不需要上升),应该放在最后,需要对比和移动的是其他剩余元素,这次将元素24移动到了63的前一个位置。其他循环将以此类推,继续完成排序任务。
3.算法实现(Java)
public int[] popUpSorting(int a[]) {
System.out.println("开始冒泡排序");
int temp; //设置中间变量用于交换
for (int i = 0; i < a.length - 1; i++) {
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
// 第一遍 从第一个元素开始与后面的每一个元素比较 如果后面的那个元素比自身大 就交换 小就继续往下比 直到最后一个 这样第一个元素就是最小的了
//第二遍 从第二个元素开始与后面的每一个元素比较 如果后面的那个元素比自身大 就交换 小就继续往下比 直到最后一个 这样第二个元素就是最小的了
//直到倒数第二个与最后一个比完 整个序列就是有序的了
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a;
}