选择排序:
选择排序的原理:
每一次排序后的效果就是第一个数要么是最小要么是最大
图解:
下面给大家用代码来详细的展示这个过程:
/**
* @author yxm
* 选择排序的原理:
* 每一次排序后的效果就是第一个数要么是最小要么是最大
* 也就是说选择排序的一个方式呢就是排序的时候都是以某个索引上的数去和该索引
* 后面的数去进行比较,随着进一步的比较如果后面没有比该索引对应的数小的数,那么
* 该数就不发生改变,并且再将该索引向下推一位进行比较,那么如果后面有比该索引
* 对应的数要小的那么,该索引上对应的值将发生改变并且这种改变是随时可能发生的(直到一次比较结束)
* 通过这样子的比较一直到该索引对应的值是数组的倒数第二个数的时候那么整个排序也就完成了。
* 给定一个数组 12 ,5,1,78,0,-5,58,3
*/
public class XuanZeSort {
public static void main(String[] args){
int [] arr ={ 12 ,5,1,78,0,-5,58,3 };
System.out.println("排序前");
list(arr);
int x=0;
for(int y=1;y<arr.length;y++){
if(arr[x]>arr[y]){
int t=arr[x];
arr[x]=arr[y];
arr[y]=t;
}
}
System.out.println("第一次排序:");
list(arr);
x=1;
for(int y=2;y<arr.length;y++){
if(arr[x]>arr[y]){
int t=arr[x];
arr[x]=arr[y];
arr[y]=t;
}
}
System.out.println("第二次排序:");
list(arr);
x=2;
for(int y=3;y<arr.length;y++){
if(arr[x]>arr[y]){
int t=arr[x];
arr[x]=arr[y];
arr[y]=t;
}
}
System.out.println("第三次排序:");
list(arr);
//发现规律
x=3;
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
int t=arr[x];
arr[x]=arr[y];
arr[y]=t;
}
}
System.out.println("第四次排序:");
list(arr);
//总结:x是从0~arr.length-x的进行比较
for( x=0;x<arr.length-1;x++){
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
int t=arr[x];
arr[x]=arr[y];
arr[y]=t;
}
}
}
System.out.println("排序后:");
list(arr);
}
public static void list(int [] arr){
System.out.print("[");
for(int x=0;x<arr.length;x++){
if(x==arr.length-1){
System.out.print(arr[x]);
}
else{
System.out.print(arr[x]+",");
}
}
System.out.println("]");
}
}
直接排序代码块:
public class XuanZeSort{
public static void main(String[] args) {
System.out.print("[");
int arr[]={12,5,1,78,0,-5,58,3};
for(int x=0;x<arr.length-1;x++){
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
int t=arr[x];
arr[x]=arr[y];
arr[y]=t;
}
}
}
for(int i:arr){
System.out.print(i+",");
}
System.out.print("]");
}
}