一次编程练习
时隔几个月再次实现冒泡排序
冒泡排序的算法的思路:
指针遍历一次,就会把一个最大的数放到最后,每遍历一次后指针遍历的上限-1。
程序实现的一些思路:
1.本质上是两次循环,大循环套一个小循环
1.1 大循环的循环一次就能把一个最大的数放到最后
1.2 小循环一次可以把指针向后移动一位
1.2.1 移动时可以进行数值判断
2.确定一些循环停止的终点是比较关键的
2.1确定大循环停止的点
2.1确定小循环停止的点
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {-7,6,5,4,3,2,1};
sort(arr);
for (int i:arr) {
System.out.print(i+" ");
}
}
public static void sort(int[] arr){
int maxSize = arr.length;
int front,rear;
//进行maxSize - 2次冒泡,即循环一次进行一次冒泡
for (int i = 0; i < maxSize - 1; i++) {
//每次指针都要归零
int num = 0;//指针
//停止单次循环的下标
int lastNum = (maxSize-1) - i;
//比较所有元素,即进行一次冒泡
while(true){
//从数组拿数出来
front = arr[num];
rear = arr[num+1];
//比较判断
if(front > rear){
exchange(arr,num);
num++;
}else {
num++;
}
//进行判定,毕竟已经排序好的不需要再进行排序了
if(num == lastNum){
break;
}
}
}
}
/**
* 交换数组两个数的位置
* @param arr
* @param num
*/
private static void exchange(int[] arr,int num){
int front = arr[num];
int rear = arr[num+1];
arr[num] = rear;
arr[num+1] = front;
}
}