【Java之数据结构与算法】
选择排序
package Code01;
public class Code01_SelectionSort {
public static void selectionSort(int[] arr) {
if(arr==null||arr.length<2) {
return;
}
for(int i=0;i<arr.length;i++) {
int minIndex = i;
for(int j=i+1;j<arr.length;j++) {
minIndex = arr[minIndex] > arr[j] ? j : minIndex;
}
swap(arr,i,minIndex);
}
}
public static void swap(int[] arr,int i,int j) {
int tmp=arr[j];
arr[j]=arr[i];
arr[i]=tmp;
}
public static void printArray(int[] arr) {
for (int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr= {7,5,6,8,9,1,5,2,3,6};
printArray(arr);
selectionSort(arr);
printArray(arr);
}
}
冒泡排序
public static void bubbleSort(int[] arr) {
if(arr==null||arr.length<2) {
return;
}
for(int end=arr.length-1;end>=0;end--) {
for(int second=1;second<=end;second++) {
if(arr[second-1]>arr[second]) {
swap(arr,second-1,second);
}
}
}
}
插入排序
public static void insertSort1(int[] arr) {
if(arr==null||arr.length<2) {
return;
}
for(int end=1;end<arr.length;end++) {
int newNumIndex=end;
while(newNumIndex-1>=0 && arr[newNumIndex-1]>arr[newNumIndex]) {
swap(arr,end-1,end);
newNumIndex--;
}
}
}
public static void insertSort2(int[] arr) {
if(arr==null||arr.length<2) {
return;
}
for(int end = 1 ; end < arr.length ; end++) {
//pre 新数的前一个位置
for(int pre = end-1 ; pre>=0 && arr[pre] > arr[pre+1] ; pre--) {
swap(arr , pre , pre+1);
}
}
}