冒泡排序、选择排序、插入排序的不同及其实现

1.冒泡排序
    原理:冒泡排序广泛用于数组排序,大致原理就是从第一个数开始,通过和后面一个数相比较,将较大的往后挪,一一比较之后,将最大的放到最下面。
    
2.选择排序
   原理:先找到整个数组里面的最小值,将其和数组的第一个数值进行交换。然后在除了第一个数值之外的剩下的数组里面进行搜索,找到最小的数值,将其和整个数组的第二个数值交换。依次进行,直到最后一个数值。
   
3.插入排序

  原理:假设第0个元素已经在正确的位置上,从第1个元素开始,依次和左边已经排好的序列进行比较,将值插入到左边合适的位置上

package array;
import java.util.Arrays;
/**
 * 有1,3,2,5,0共5个数字
请使用冒泡法从小到大排序
请使用选择法从大到小排序
请使用插入法从小到大排序
 * @author DELL
 *
 */
public class ArrayThreeSort {

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num={1,3,2,5,0};
//请使用冒泡法从小到大排序
System.out.println("排序前的数组:"+Arrays.toString(num));       //用于输出数组中的数
int temp=0; //用于交换的临时变量
for(int i=0;i<num.length;i++){      //用于比较的数
for(int j=i+1;j<num.length;j++){    //与后面的数一一进行比较
if(num[i]>num[j]){
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
}
System.out.println("冒泡排序后的数组:"+Arrays.toString(num));
//重置数组为排序前的数
num[0]=1;
num[1]=3;
num[2]=2;
num[3]=5;
num[4]=0;

System.out.println("排序前的数组:"+Arrays.toString(num));


//请使用选择法从大到小排序
for(int i=0;i<num.length;i++){//第几个位置
int min=i;   //定义每层循环的最小值初值下标
for(int j=i;j<num.length;j++){  //判断最小值
if(num[min]>num[j]){
min=j;
}
//交换
temp=num[i];
num[i]=num[min];
num[min]=temp;
}

}

System.out.println("选择排序后的数组:"+Arrays.toString(num));


//重置数组为排序前的数
num[0]=1;
num[1]=3;
num[2]=2;
num[3]=5;
num[4]=0;

System.out.println("排序前的数组:"+Arrays.toString(num));


//请使用插入法从小到大排序
for(int i=1;i<num.length;i++){   //循环次数
for(int j=i;j>0;j--){    //比较元素
if(num[j]<num[j-1]){
temp=num[j];
num[j]=num[j-1];
num[j-1]=temp;
}else{               //如果现在的数比前一个数大,由于前面的数都是有序的,所以无需再与前面的数进行比较,退出 循环
break;
}
}
}
System.out.println("插入排序后的数组:"+Arrays.toString(num));
}


}


运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值