直接插入排序
直接插入排序:将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。
代码实现:
package com.lian.cn;
import java.util.Arrays;
public class test {
public static void main(String[] args) {
int[] arr={23,12,45,35,87,6,57,-19,24,80,67,99};
for (int i = 1; i <arr.length-1 ; i++) {
int j=i;
int tmp=0;
while (j>0&&arr[j-1]>arr[j]){
tmp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=tmp;
j--;
}
}
System.out.println(Arrays.toString(arr));
}
}
快速排序
快速排序:从数组中取出一个数作为基准,将比这个数大或等于它的数全部放在右边,小于它的数全部放在左边;再对左右区间重复第二部,直到各区间只有一个数
代码实现:
package com.lian.cn;
import java.util.Arrays;
public class test {
public static void main(String[] args) {
int[] arr={23,12,45,35,87,6,57,-19,24,80,67,99};
QuickSort sort = new QuickSort();
sort.quicksort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
}
class QuickSort{
public void quicksort(int []arr,int left,int right){
if (left < right) {
int index = getIndex(arr, left, right);
quicksort(arr, left, index - 1);
quicksort(arr, index + 1, right);
}
}
private int getIndex(int[] arr, int left, int right) {
int i = left;
int j = right;
int n = arr[i];
while (i < j) {
while (i < j && arr[j] >= n) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < n) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = n;
return i;
}
}