排序算法
写出三种排序算法
冒泡排序
public class Dome {
// 冒泡排序 从小到大
public static void main(String args[]){
int [] list= {7,6,4,10,25,3};
maopao(list);
for (int i : list) {
System.out.println(i);
}
}
public static int[] maopao(int [] list) {
int n=list.length;
int temp=0;
for(int x=0;x<n-1;x++) {
for(int j=0;j<n-1;j++) {
if(list[j+1]<list[j]) {
temp=list[j+1];
list[j+1]=list[j];
list[j]=temp;
}
}
}
return list;
}
}
快速排序
// 快速排序
public static void main(String args[]){
int [] list= {7,6,4,10,25,3};
kuaisu(list,0,list.length-1);
for (int i : list) {
System.out.println(i);
}
}
/**
* 快速排序(左右指针法)
* @param arr 待排序数组
* @param low 左边界
* @param high 右边界
*/
public static void kuaisu(int arr[], int low, int high) {
if (arr == null || arr.length <= 0) {
return;
}
if (low >= high) {
return;
}
int left = low;
int right = high;
int key = arr[left];
while (left < right) {
while (left < right && arr[right] >= key) {
right--;
}
while (left < right && arr[left] <= key) {
left++;
}
if (left < right) {
swap(arr, left, right);
}
}
swap(arr, low, left);
kuaisu(arr, low, left - 1);
kuaisu(arr, left + 1, high);
}
public static void swap(int arr[], int low, int high) {
int tmp = arr[low];
arr[low] = arr[high];
arr[high] = tmp;
}
选择排序
/**
* 排序方法
* @param arr 待排序的数组
* @return toString 方便输出
*/
public static String selectionSort(int[] arr) {
for(int i=0; i<arr.length; i++) {
//最小数的索引
int minIndex = i;
for(int j=i; j<arr.length; j++) {
//找到最小数,并记录最小数的索引
if(arr[j] < arr[minIndex]) {
minIndex = j;
}
}
//交换符合条件的数
int tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
return Arrays.toString(arr);
}
public static void main(String[] args) {
int[] arr = { 3, 5, 52, 74, 75, 3, 7, 31};
System.out.println("排序后的数组:"+ selectionSort(arr));
}
更多详细可参考
https://blog.youkuaiyun.com/java_1996/article/details/87113496