快速排序
用快速排序实现数组从小到大排序
public class QuickSort {
public static void main(String[] args) {
int[] shuzu = {10,-100,35,0,1001};
QuickSort(shuzu,0,shuzu.length-1);
for (int i : shuzu) {
System.out.print(i+" ");
}
}
public static void QuickSort(int[] arr,int left,int right) {
//左指针大于或者等于右指针时直接退出,不能排序
if (left >= right) {
return;
}
//base为基准数
int base = arr[left];
int i = left;
int j = right;
/*
* j先从最右面开始扫描,找到比base小的就停止,i从最左边开始扫描,找到比基准数大的就停止
* 然后交换arr[i]和arr[j]
* 然后继续扫描直到i=j
* 然后交换基准数和arr[i],此时基准数左边的都比基准数小右边的都比基准数大
* 以基准数为分界左边和右边又分为两个数组,分开依次排序
* 调用自己方法再排序
* */
while (i!=j){
//从右开始寻找比base小的数
while (arr[j]>=base && j>i){
j--;
}
//从左开始寻找比base大的
while (arr[i]<=base && j>i){
i++;
}
int change;
change=arr[i];
arr[i]=arr[j];
arr[j]=change;
}
arr[left]=arr[i];
arr[i]=base;
QuickSort(arr,left,i-1);
QuickSort(arr,j+1,right);
}
}
冒泡排序:
//冒泡排序
public class BubbleSort {
public static void main(String[] args) {
int[] shuzu={10,0,-100,3000,89};
bubbleSort(shuzu);
for (int i : shuzu) {
System.out.print(i+" ");
}
}
public static void bubbleSort(int[] arr){
int c;
for (int i = 0;i<arr.length-1;i++){
for (int j = 0;j<arr.length-i-1;j++){
if (arr[j]>arr[j+1]){
c=arr[j];
arr[j]=arr[j+1];
arr[j+1]=c;
}
}
}
}
}
选择排序:
//选择排序
public class SelectSort {
public static void main(String[] args) {
int[] shuzu = {10,30,-10,900,1000};
selectSort(shuzu);
for (int i : shuzu) {
System.out.print(i+" ");
}
}
public static void selectSort(int[] arr){
int c;
for (int i=0;i<arr.length;i++){
int minindex = i;
for (int j=i+1; j<arr.length;j++){
if (arr[minindex]>arr[j]){
minindex=j;
}
}
c=arr[i];
arr[i]=arr[minindex];
arr[minindex]=c;
}
}
}