选择排序、冒泡排序、插入排序的排序
选择排序
public static void main(String[] args) {
int[] num = new int[]{10,50,30,28,6,2,56};//原数组
for(int j=0;j<num.length-1;j++){ //外部循环每进行一次得到个最小值
int min=j; //用于定位每一次的最小值及位置
for(int i=j+1;i<num.length;i++ ){ //内部,一组中比较最小
if(num[min]>num[i]){
min=i;
}
}
System.out.print(num[j]+" ");//输出每一次比较时输出的最小值
if(min!=j){ //如果定位的最小值不是它现在的位置,即将现在位置及
int tmp=num[j]; //应该在的位置交换
num[j]=num[min];
num[min]=tmp;
}
}
System.out.println();
for(int a:num)
System.out.print(" "+a);
}
原理:每一趟从待排序的记录中选出最小的元素,和他在排好序中的位置进行交换。
冒泡排序
原理:比较两个相邻的值,将值大的元素交换至右端。每一次选出值大的
内部循环中:比较的次数逐渐减少。
for(int j=0;j<num.length-1;j++){
for(int i=0;i<num.length-j;i++ ){
if(num[i]>num[i+1]){
int tmp;
tmp=num[i];
num[i]=num[i-1];
num[i-1]=tmp;
}
}
}
for(int a:num)
System.out.print(" "+a);
插入排序
原理:将元素前两个为一组,每一次将后面的元素加入前面元素中适当的位置。
内部循环中:比较的次数逐渐增多。
for(int j=1;j<num.length;j++){
for(int i=j;i>0;i--){
if(num[i-1]>num[i]){
int tmp;
tmp=num[i];
num[i]=num[i-1];
num[i-1]=tmp;
}
}
}
for(int a:num)
System.out.print(" "+a);
总结
外部循环思想一致,都是循环array.length-1次!主要区别在于内部循环!
内部循环主要包括:
1、循环时条件判断语句:
1)比较次数递增—>以外部循环为准,小于等于外部循环的次数,外部循环1次,比较1次,外部循环n次比较n次;
2)比价次数递减—>array.length-1减去外部循环次数。
2、内部循环中需要获得什么:
1)冒泡排序:两两交换位置,将大值放在右边;
2)插入排序:将后面的元素插入前面的元素中适当的位置;
3)选择排序:选择未排好序中最小的,将其放置外部循环次数对应的位置。