冒泡排序
大数上浮法
public class Test1 {
public static void main(String[] args) {
int[]arr= {1,2,4,-2,-5,9,12};
bubbleSort(arr);
// for(int i=0;i<) {
// System.out.print(i+",");
// }等价于下面三行代码
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+",");
}
}
private static void bubbleSort(int[]arr) {
// 冒泡排序.大数上浮
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-1-i;j++) {
if(arr[j]>arr[j+1]) {
swap(arr,j,j+1);
}
}
}
}
private static void swap(int[] arr, int i, int j) {
// 两个数交换的函数
arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];
}
}
小数下沉法
public class Test1 {
public static void main(String[] args) {
int[]arr= {1,2,4,-2,-5,9,12};
bubbleSort02(arr);
// for(int i=0;i<) {
// System.out.print(i+",");
// }等价于下面三行代码
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+",");
}
}
private static void bubbleSort02(int[]arr) {
// 冒泡排序.小数下浮
for(int i=0;i<arr.length-1;i++) {
for(int j=arr.length-1;j>i;j--) {
if(arr[j]<arr[j-1]) {
swap(arr,j,j-1);
}
}
}
}
private static void swap(int[] arr, int i, int j) {
// 两个数交换的函数
arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];
}
}
选择排序
经典版
public class Test1 {
public static void main(String[] args) {
int[]arr= {1,2,4,-2,-5,9,12};
selectSort(arr);
// for(int i=0;i<) {
// System.out.print(i+",");
// }等价于下面三行代码
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+",");
}
}
private static void selectSort(int[] arr) {
// 选择排序
for(int i=0;i<arr.length-1;i++) {
int min =i;
for(int j =i;j<arr.length;j++) {
if(arr[min]>arr[j]) {
min=j;
}
}
if(min!=i) {
swap(arr,i,min);
}
}
}
private static void swap(int[] arr, int i, int j) {
// 两个数交换的函数
arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];
}
}
小改进版
public class Test1 {
public static void main(String[] args) {
int[]arr= {1,2,4,-2,-5,9,12};
selectSort02(arr);
// for(int i=0;i<) {
// System.out.print(i+",");
// }等价于下面三行代码
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+",");
}
}
private static void selectSort02(int[] arr) {
// 选择排序02
for(int i=0;i<arr.length-1;i++) {
for(int j =i;j<arr.length;j++) {
if(arr[i]>arr[j]) {
swap(arr,i,j);
}
}
}
}
private static void swap(int[] arr, int i, int j) {
// 两个数交换的函数
arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];
}
}
插入排序
public class Test1 {
public static void main(String[] args) {
int[]arr= {1,2,4,-2,-5,9,12};
insertSort(arr);
// for(int i=0;i<) {
// System.out.print(i+",");
// }等价于下面三行代码
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+",");
}
}
private static void insertSort(int[] arr) {
// 插入排序
for(int i =1;i<arr.length;i++) {
for(int j=i;j>0&&arr[j]<arr[j-1];j--) {
swap(arr,j,j-1);
}
}
}
private static void swap(int[] arr, int i, int j) {
// 两个数交换的函数
arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];
}
}
结果: