算法基础课 2.4 插入排序 冒泡排序 选择排序
2020-02-28 本文已影响0人
sakura579
插入排序
// 插入排序
public static void main(String[] args) {
int arr[] = new int[] { 3, 1, 2, 4, 5 };
for (int i = 1; i < arr.length; i++) {
int target = arr[i];
int j = i - 1;
while (j>-1&&target < arr[j]) {
arr[j+1] = arr[j];
j--;
}
arr[j+1] = target;
}
System.out.println(Arrays.toString(arr));
}
冒泡排序
import java.util.Arrays;
public class ssad {
public static void main(String[] args) {
int [] arr = new int[] {3,2,1};
sort(arr);
System.out.println(Arrays.toString(arr));
}
//冒泡排序
static void sort(int [] arr) {
for(int j = 0;j<arr.length;j++) {
//注意上边界都是从第一个开始,但是每趟完成之后,天花板在降低
for(int i =0;i<arr.length-j-1;i++) {
if(arr[i]>arr[i+1]) {
utils(arr,i,i+1);
}
}
}
}
static void utils(int[] arr,int i,int j) {
int tm = arr[i];
arr[i] = arr[j];
arr[j] = tm;
}
}
选择排序
package study;
import java.util.Arrays;
public class sssx {
public static void main(String[] args) {
int [] arr = {4,5,6,3,2,1};
sort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
// 选择排序
private static void sort(int []arr,int low,int hight) {
for(int i =low;i<hight;i++) {
int min =i;
for(int j=min+i;j<=hight;j++) {
if(arr[min]>arr[j]) {
min = j;//覆盖
}
}
utils(arr,min,i);//交换
}
}
static void utils(int[] arr,int i,int j) {
int tm = arr[i];
arr[i] = arr[j];
arr[j] = tm;
}
}