java 排序
package cn.itcast.demo;
import java.util.Arrays;
public class Demo02 {
public static void main(String[] args) {
int[] arr = new int[]{6,1,2,3,9,7,4,5,10,8};
selectSort(arr);
selectSortM(arr);
niXu(arr);
quickSort(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 快速排序
* @param arr
*/
private static void quickSort(int[] arr) {
sort(arr,0,arr.length-1);
}
/***
* 快速排序
* @param arr
* @param stIndex
* @param edIndex
*/
private static void sort(int[] arr,int stIndex,int edIndex) {
if(stIndex>edIndex){
return;
}
int i,j,temp,t;
i = stIndex;
j = edIndex;
temp = arr[stIndex];
while(i<j){
while(arr[j]>temp && i<j ){
j--;
}
while(arr[i]<=temp && i<j){
i++;
}
if(i<j){
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
System.out.println("中间位置:"+arr[i]+":"+arr[j]);
arr[stIndex] = arr[i];
System.out.println("起始位置:"+arr[stIndex]);
arr[j] = temp;
System.out.println("中间位置:"+arr[j]);
System.out.println(Arrays.toString(arr));
sort(arr, stIndex, i-1);
sort(arr, j+1, edIndex);
}
public static int erFb(int[] arr,int sum){
int min=arr[0],max = arr.length-1;
int mid = 0;
while (min<=max) {
mid = (min+max)/2;
if(sum>mid){
mid = mid+1;
}else if(sum<mid){
max = mid-1;
}else{
return mid;
}
}
return -1;
}
/**
* 数组逆序
* @param arr
*/
private static void niXu(int[] arr) {
for (int min=0,max=arr.length-1; min < max; min++,max--) {
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp;
}
System.out.println(Arrays.toString(arr));
}
/**
* 冒泡排序
* @param arr
*/
private static void selectSortM(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
/**
* 选择排序
* @param arr
*/
private static void selectSort(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}