一,冒泡排序法
基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
int[] arr = { 9, 5, 3, 1, 8, 7 };
/**
* 冒泡排序法
* @param arr
*/
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
// 外层循环控制多少趟
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
二,选择排序法
基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
int[] arr = { 9, 5, 3, 1, 8, 7 };
public static void selectSort(int[] arr){ int position = 0; for(int i=0;i<arr.length;i++){ position = i; int temp = arr[position]; //遍历后面的数字,找到该组数的最小值,以及记录该数的位置 for(int j=i+1;j<arr.length;j++){ if(arr[j]<temp){ //记录小的数,并且保存该数所在的位置 temp = arr[j]; position = j; } } arr[position] = arr[i]; arr[i] = temp; } }
分析:首先默认第一个数是最小的数,并且记录一下该数的位置position,遍历后面的所有的数,找到后面的数的最小的数1,记录该数到变量temp,位置为position=3,
然后将第一个位置9赋值为arr[position],将本次遍历最小的数1赋值为第一个位置,以此类推...