目录
冒泡排序
冒泡排序(Bubble Sorting) 的基本思想是: 通过对待排序序列从前向后(从下标较小的元素开始) ,依次比较相邻元素的值(两两比较), 若发现逆序则交换, 使值较大的元素逐渐从前移向后部, 就像水底下的气泡一样逐渐向上冒。
冒泡排序规则
(1)一共进行 数组大小-1 次的大循环
(2)每一趟排序的次数在逐渐减少
(3)如果在某趟排序中,没有发生一次交换,则可以提前结束
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int arr[] = {3,9,-1,10,-2};
// int[] arr = {3,9,-1,10,-2};
bubbleSort(arr);
}
//冒泡排序方法
public static void bubbleSort(int[] arr){
int temp = 0; //存储临时变量
boolean flag = false; // 判断是否进行了交换
for(int j=0; j<arr.length-1; j++) {
for(int i=0; i<arr.length-1-j; i++){
if(arr[i]>arr[i+1]){
temp = arr[i+1];
arr[i+1] = arr[i];
arr[i] = temp;
flag = true;
}
}
if(!flag){
break;
}else{
flag =false; //这里不要忘记重置,为了下次判断
}
System.out.println("第"+(j+1)+"趟排序后的数组");
System.out.println(Arrays.toString(arr));
}
}
}
运行结果:
选择排序
选择排序:是从欲排序的数据中, 按指定的规则选出某一元素, 再依规定交换位置后达到排序的目的。
选择排序的基本思想是: 第一次从 arr[0]~arr[n-1]中选取最小值,与 arr[0] 交换, 第二次从 arr[1]~arr[n-1]中选取最小值, 与 arr[1]交换, …, 第 i 次从 arr[i-1]~arr[n-1]中选取最小值, 与 arr[i-1]交换, …, 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值,与 arr[n-2]交换, 总共通过 n-1 次, 得到一个按排序码从小到大排列的有序序列。
import java.util.Arrays;
public class SelectSort {
public static void main(String[] args) {
int arr[] = {104,34,119,1};
selectSort(arr);
System.out.println("***************");
selectSort_2(arr); //这里是输入的引用地址,所以这个时候的arr其实已经是顺序的了
}
public static void selectSort(int[] arr){
//通过数组的值
int temp_min = 0;
int temp_value = 0;
for(int i=0; i<arr.length-1; i++){
temp_min = arr[i];
for(int j=i; j<arr.length-1; j++){
if(temp_min>arr[j+1]){
temp_value = temp_min;
temp_min = arr[j+1];
arr[j+1] = temp_value;
}
}
arr[i] = temp_min;
System.out.println("第"+(i+1)+"趟排序后的数组");
System.out.println(Arrays.toString(arr));
}
}
public static void selectSort_2(int[] arr) {
//通过数组的索引,这样速度更快
for (int i=0; i<arr.length-1; i++) {
int min = arr[i];
int minIndex = i;
for (int j=i+1; j<arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
// 如果本来就是最小的,不需要交换
if (minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
System.out.println("第"+(i+1)+"趟排序后的数组");
System.out.println(Arrays.toString(arr));
}
}
}
运行的结果: