在下偶尔心血来潮,去写了最基本的排序算法,发现居然写不出来,因此深受打击,特写此文章给那些和在下一样的刚入门的小白们!废话不多说直接贴代码!
//冒泡排序
void bubblingSort(){
int[] arr={5,9,0,1,4};
System.out.println("排序之前");
for(int n:arr){
System.out.print(n);
}
System.out.println();
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]){
int max=arr[j+1];
arr[j+1]=arr[j];
arr[j]=max;
}
}
}
System.out.println("排序之后");
for(int n:arr){
System.out.print(n);
}
}
上面的代码是排序中最简单的冒泡排序,它的原理是在每轮的比较中比较两个相近的值,然后互换,这样的理解起来虽然容易,但是效率并不高,下面是另一种排序方式,叫做选择排序,代码如下:
//选择排序
void choseSort(){
int[] arr={5,9,0,1,4};
System.out.println("排序之前");
for(int n:arr){
System.out.print(n);
}
System.out.println();
for(int i=0;i<arr.length-1;i++){//控制轮数
int max=i;//每次将第一个下标先赋值给max
for(int j=i+1;j<arr.length;j++){
if(arr[j]>arr[max]){
max=j;
}
}
if(max!=i){//如果最大值不是刚开始的i
int temp=arr[max];
arr[max]=arr[i];
arr[i]=temp;
}
}
System.out.println("排序之后");
for(int n:arr){
System.out.print(n);
}
}
选择排序的原理在下看来其实更为合理,每一轮将第(i)个值设为最大的值的下标,然后与后面的值进行比较,如果后面的值大于max,那么就将它的下标赋值给max,这样一次外循环就得出了最大值的下标max,然后进行比较是不是原来设置的i,如果不是的话进行交换;显然这样的执行效率更高!
这就是在下会的两种排序方式,希望对刚入门的战友有一些用!