一、冒泡排序
冒泡排序:元素两两比较,大的往后放,经过一轮比较后,那么最大的元素就会出现在最后面。
public static void main(String[] args) {
int[] arr = {24, 69, 80, 57, 13,1,4,6,-1};
for (int j = 0; j <arr.length-1; j++) {
for (int i = 0; i < arr.length - 1-j; i++) {
if (arr[i] > arr[i + 1]) {
int t = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = t;
}
}
}
System.out.println(Arrays.toString(arr));
}
二、选择排序
每次拿一个元素,跟他后面的元素,挨个去比,小的往前放,经过一轮比较后,那么最小元素就会放在最前面去。
public static void main(String[] args) {
int[] arr = {24, 69, 80, 57, 13, 4, 6, 90, -1};
for (int index = 0; index < arr.length - 1; index++) {
for (int i = 1 + index; i < arr.length; i++) {
if (arr[index] > arr[i]) {
int t = arr[index];
arr[index] = arr[i];
arr[i] = t;
}
}
}
System.out.println(Arrays.toString(arr));
}
三、插入排序
直接插入排序:将后面的元素,插入之前的一个有序列表,使之仍然保持有序。
public static void main(String[] args) {
int[] arr = {2, 1, 0, 6, 9, 0, 10, 100, 20, 10, -1, 3, 6, 100, 200, 150};
// sortDemo1(arr);
for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if (arr[j] < arr[j - 1]) {
int t = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = t;
}
}
}
System.out.println(Arrays.toString(arr));
}
四、快速排序
public class MyTest {
public static void main(String[] args) {
int[] arr = {2, 1, 0, 6, 9, 0, 10, 100, 20, 10, -1, 3, 6, 100, 200, 150};
QuickSortUtils.quicksort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
}
public class QuickSortUtils {
public static void quicksort(int[] arr,int start,int end){
while(start<end){
int index=getIndex(arr,start,end);
quicksort(arr,start,index-1);
quicksort(arr,index+1,end);
}
}
private static int getIndex(int[] arr, int start, int end) {
int i=start;
int j=end;
int x=arr[i];
while(i<j){
if(i<j&&arr[j]>=x){
j--;
}
if(i<j){
arr[i]=arr[j];
i++;
}
if(i<j&&arr[i]<x){
i++;
}
if(i<j){
arr[j]=arr[i];
j--;
}
}
arr[i]=x;
return i;
}
}