- 排序算法
- 一、冒泡排序
- 二、快速排序
- 三.选择排序
- 总结
public class Mp {
public static void main(String[] args) {
int[]arr=new int[]{2,8,4,10,6,12,18,25,7,11};
int[] ints = bubbleSort(arr);
for (int anInt : ints) {
System.out.println(anInt);
}
}
public static int[] bubbleSort(int[]arr){
//如果数组长度为0,那么数组中不存在数字,直接返回空数组
if(arr.length==0) {
return arr;
}
//数组的下标从0开始
for (int i = 0; i < arr.length; i++) {
//嵌套循环
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j]>arr[j+1]){
int k=arr[j];
arr[j]=arr[j+1];
arr[j+1]=k;
}
}
}
return arr;
}
}
二、快速排序
public class Kp {
public static void main(String[] args) {
List integers = Arrays.asList(9, 5, 4, 8, 10, 7, 35, 6, 25, 14);
faster(integers,0,integers.size()-1);
System.out.println(integers);
}
private static void faster(Listintegers,int begin,int end) {
//第二次排序才能确定9的位置 max=7 min=4 6, 5, 4, 8, 9, 7, 35, 10, 25, 14
int min=begin;
int max=end;
int key=integers.get(begin);
while (max>min){
while (max>min&&key<=integers.get(max)){
max--;
}
//交换
if(key>=integers.get(max)){
int temp=integers.get(max);
integers.set(max,key);
integers.set(min,temp);
}
//第一次上面排序完之后的结果 6, 5, 4, 8, 10, 7, 35, 9, 25, 14
while(max>min&&key>=integers.get(min)){
min++;
}
if(key
int temp=integers.get(min);
integers.set(max,temp);
integers.set(min,key);
}
//上面第一次排序完后的结果 6, 5, 4, 8, 9, 7, 35, 10, 25, 14
}
//以9为分节点然后开始递归排序
if(min-1>begin)faster(integers,begin,min-1);
if(max+1
三.选择排序
public class Xp {
public static void main(String[] args) {
int[]arr=new int[]{2,8,4,10,6,12,18,25,7,11};
int[] ints = selectSort(arr);
for (int anInt : ints) {
System.out.println(anInt);
}
}
public static int[] selectSort(int[]arr){
for (int i = 0; i < arr.length; i++) {
int index=i;
for (int j = i+1; j < arr.length; j++) {
if(arr[index]>arr[j])index=j;
}
if(index !=i){
int k=arr[i];
arr[i]=arr[index];
arr[index]=k;
}
}
return arr;
}
}
总结
今日诗句:
成大事不在于力量的大小,而在于能坚持多久



