选择排序算法:
随机的一组数排序,例如: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"); //打印
}
}
}
运行结果如下: