快排
/**
*
* @param num 排序的数组
* @param left 数组的前针
* @param right 数组后针
*/
public static void quickSort(int [] num ,int left,int right){
//如果left等于right ,即数组只有一个元素,直接返回
if(left>=right){
return;
}
//设置最左边的元素为基准值,
int key =num[left];
//数组中比key小的放在左边,比key大的放在右边,key值下标为i
int i =left;
int j =right ;
while (i<j) {
//j向左移动,直到遇到比key小的值,
while (num[j]>=key&&i<j) {
j--;
}
//i向右移动,直到遇到比key 大的值
while (num[i]<=key&&i<j) {
i++;
}
//i和j 指向的元素交换,
if (i<j) {
int temp =num[i];
num[i]=num[j];
num[j]=temp;
}
}
num[left]=num [i];
num[i]=key;
quickSort(num,left,i-1);
quickSort(num,i+1,right);
}
冒泡排序
/*
* 冒泡排序
* 1,返回值类型,void
* 2,参数列表,int[] arr
*
* 第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较4次
第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比较3次
第三次:arr[0]与arr[1],arr[1]与arr[2]比较2次
第四次:arr[0]与arr[1]比较1次
*/
private void bubbleSort(int [] arr){
for (int i =0;i<arr.length-1;i++) { //外循环只需要比较arr.length -1次就可以了
for (int j =0;j<arr.length-i-1;j++) {//-1是为了防止索引越界,-i是为了提高效率
if (arr[j]>arr[j+1]) {
int temp =arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
选择排序
/*
* 选择排序
* 1,返回值类型void
* 2,参数列表int[] arr
*
* 第一次:arr[0]分别与arr[1-4]比较,比较4次
第二次:arr[1]分别与arr[2-4]比较,比较3次
第三次:arr[2]分别与arr[3-4]比较,比较2次
第四次:arr[3]与arr[4]比较,比较1次
*/
private static void selectSort(int [] arr ){
for (int i=0;i<arr.length-1;i++) {//只需要比较arr.length-1次
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;
}
}
}
}