选择排序

选择排序:

选择排序的原理:
  每一次排序后的效果就是第一个数要么是最小要么是最大

图解:


下面给大家用代码来详细的展示这个过程:

/**
 * @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("]");
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值