Java 选择排序算法编程思路详解

选择排序算法:
随机的一组数排序,例如:14,4, 49, 34, 1,0
从小到大的算法思想是第一位数与后面的数依次比较,如果第一个比第二个数大则互换位子;否的话,则不换。互换位置的实现程序:
tmp=num[i];
nu[i]=num[j];
num[j]=tmp;
然后就是第二位与后面的数依次比较,之后是第三位与后面的数依次比较等等。
再然后就是比较次数,第一层循环的总次数是数组长度减一。第一位数和第二位数比较结束,那么第一位与后面的比较呢?所以用循环嵌套。第二次循环的的初始值,判断条件是什么呢?
第一层是5次循环,换完位置然后第二位与后面的比较。然后是数组的第二位与第三位比较,比较次数:4次,依次类推,因此第二层的循环次数是循环一次少一次(实现方法是for(j=i+1;j<array.length;j++)判断条件不变,j的初值逐渐加一)。
实现程序:
for(i=0;i<array.length-1;i++){ //第一层循环
for(j=i+1;j<array.length;j++){ //第二层循环
if(num[i]>num[j]){ //比较大小
tmp=num[i];
nu[i]=num[j];
num[j]=tmp;
}
}
}
完整程序如下:
package sort;
import java.util.*;
public class sort {

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入这组数字有多少位:");
	int k = sc.nextInt();
	int[] num = new int[k];
	int temp,j;
	System.out.println("请输入一组数字:");
	for(j=0;j<k;j++){
		
		num[j] = sc.nextInt();		//输入一组数字
		
	}

	for(int i=0;i<k-1;i++){
		for(j=i+1;j<k;j++){
		
		while(num[i]>num[j]){		//换位置
			temp=num[j];
			num[j]=num[i];
			num[i]=temp;
			}
		}
	}
	for(int m=0;m<k;m++){
	System.out.print(num[m]+"\t");	//打印
	}
}

}
运行结果如下:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值