【算法】冒泡排序
冒泡排序
假设,有一个数组初始状态为 2,5,8,4,3,1 下面给出排序的过程:
程序代码:
public class BubbleSortClass{
public static void main(String[] args){
int[] array={2,5,8,4,3,1};
for(int i=0;i<array.length;i++){
int max=array[i];
int temp=i;
for(int j=i+1;j<array.length;j++){
if(array[j]>max){
max=array[j];
temp=j;
}
}
int temp2=array[i];
array[i]=max;
array[temp]=temp2;
}
for(int i=0;i<array.length;i++)
System.out.print(array[i]+",");
}
}
运行结果:
快速排序
public class QuickSortClass{
public static void quickSort(int[] a,int s,int e){
if(s>=e)return;
int temp=a[s];//哨兵
int i=s,j=e+1;//让j指向末尾null
while(true){
while(a[++i]<=temp&&i<e);//e是数组最后一个元素的位置,i<e,保证a[++i]数组不会越界
while(a[--j]>temp);//通过哨兵,这样j肯定不会越界
if(i>=j){
break;
}
int temp2=a[i];
a[i]=a[j];
a[j]=temp2;
}
a[s]=a[j];
a[j]=temp;
quickSort(a,s,j-1);
quickSort(a,j+1,e);
}
public static void main(String[] args){
int[] array={2,5,8,4,3,1};
quickSort(array,0,5);
for(int i=0;i<array.length;i++)
System.out.print(array[i]+",");
}
}