1、快速排序:
思路:
1、先找一个基准值,一般找数组的第一个值;
2、然后从数组的最右边开始遍历,如果找到比基准值小的数a,就把该数赋给基准值;
3、从基准值的下一个数开始从左向右遍历,找到比基准值大的数b,然后把该值赋给第二步中的那个比基准值大的值a,并把基准值赋给比基准值大的那个值b;
4、以b为分界,数组两边分别进行上述过程。
package com.tongtong.sort;
/**
* 快速排序
思路:1、先找一个基准值,一般找数组的第一个值;
2、然后从数组的最右边开始遍历,如果找到比基准值小的数a,就把该数赋给基准值;
3、从基准值的下一个数开始从左向右遍历,找到比基准值大的数b,然后把该值赋给第二步中的那个比基准值大的值a,并把基准值赋给
比基准值大的那个值b;
4、以b为分界,数组两边分别进行上述过程。
*/
public class QuickSort {
private void quickSort(int[] a,int low,int high){
if(low < high){
int middle = getMiddle(a,low,high);
quickSort(a,0,middle-1);
quickSort(a,middle+1,high);
}
}
public int getMiddle(int[] a,int low,int high){
int key = a[low]; //基准元素,排序中会空出来一个位置
while(low<high){
while(low<high && a[high]>=key){
high--;
}
a[low] = a[high];
while(low<high && a[low]<=key){
low++;
}
a[high] = a[low];
}
a[low] = key;
return low;
}
public void print(int[] a){
for(int i=0;i<a.length;i++){
System.out.println(a[i] + " ");
}
}
public static void main(String[] args) {
int[] a = {3,1,5,7,2,4,9,6,10,8};
QuickSort obj = new QuickSort();
System.out.println("初始值:");
obj.print(a);
int h = a.length-1;
obj.quickSort(a,0,h);
System.out.println("\n排序后:");
obj.print(a);
}
}
2、选择排序
思路:
①、从待排序序列中,找到关键字最小的元素
②、如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换
③、从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束
package sort;
import java.util.Arrays;
public class ChoiceSort {
public static void sort(int[] arr) {
for(int i=0;i<arr.length-1;i++) {
int minIndex = i;
for(int j=i+1;j<arr.length;j++) {
if(arr[j] < arr[minIndex]) {
minIndex = j;
}
if(i != minIndex) {
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
public static void main(String[] args) {
int[] arr = {3,7,2,8,6,5,4,1};
sort(arr);
}
}
3、插入排序
直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。
package sort;
import java.util.Arrays;
public class InsertSort {
public static void sort(int[] array) {
int j;
for(int i=1;i<array.length;i++) {
int tmp = array[i];
j = i;
while(j > 0 && tmp < array[j-1]) {
array[j] = array[j-1];
j--;
}
array[j] = tmp;
}
System.out.println(Arrays.toString(array));
}
public static void main(String[] args) {
int[] arr = {3,7,2,8,6,5,4,1};
sort(arr);
}
}