冒泡排序、插入排序和选择排序

1、冒泡排序

基本原理:定义一个有n个元素的数组序列,从第一个元素开始依次比较相邻两个元素的大小;当下一个元素的值大于前一个元素的值时,将两个元素的位置进行调换;然后再和下一个元素进行比较,并且交换位置;一直重复该过程直到比较的结果是剩下一个元素位置;其中n个元素中最大的元素值最后交换到最后一位,也就是第n位。

代码示例:

package paixu;
 
public class BubbleSort {
 
public static void main(String[] args) {
int[] array = {12,32,25,46,56,32,11,78,40,98,64};
int temp;	//定义一个中间遍历
for(int i=0;i<array.length;++i){	//首先遍历数组
for(int j=array.length-1;j>i;--j){	//对数组进行内层循环
if(array[j]<array[j-1]){	//判断当前数组元素和上一个数组元素的大小,如果当前数小于抢一个数,则进行调换换位置
temp=array[j];	//采用第三变量进行数组元素的位置调换
array[j]=array[j-1];
array[j-1]=temp;
}
}
}
//输出遍历已经排序好之后的数组
for(int i=0;i<array.length;i++){
System.out.print(array[i]+"  ");
}
}
}
输出结果:11  12  25  32  32  40  46  56  64  78  98

 

2、插入排序,

基本原理:定义一个有n个元素的数组序列,初始时假设第一个元素自成一个有序的序列,其余记录为无序序列;接着从第二个元素开始,按照元素大小依次将当前处理的元素插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。

代码示例:

package paixu;
 
public class InsertsSort {
public static void main(String[] args){
int[] array = {7,3,19,6,30,7,20};
if(array!=null){	//判断数组是否为空
for(int i=1;i<array.length;i++){	//遍历数组
int temp=array[i];	//定义第三变量temp
int j=i;
if(array[j-1]>array[j]){	//判断当前数组元素和上一个数组元素的大小,如果当前数小于前一个数,则进行调换换位置
while(j>=1&&array[j-1]>array[j]){
temp=array[j];	//采用第三变量进行数组元素的位置调换
array[j]=array[j-1];
array[j-1]=temp;
j--;
}
}else{
array[j]=temp;	//如果当前数大于前一个数,则位置不变
}
}
for(int i=0;i<array.length;i++){	//遍历已经排序完成的数组序列,并上输出该数组序列
System.out.print(array[i]+"  ");
}
}
   }
}

输出结果:3  6  7  7  19  20  30  

 

3、选择排序

基本思想:定义一个有n个元素的数组序列,首先对数组序列中的元素进行比较,得出最小的数组元素,并将该元素和数组第一个元素的位置进行交换;然后将不包括数组第一个元素以外 的元素进行第二轮的比较,得出第二轮比较出的最小值,将第二轮的最小值和数组元素的第二个元素位置进行交换;不断的重复该过程,直到进行比较的记录只有一个时为止。

代码示例:

package paixu;
 
public class SelectSort1 {
 public static void main(String[] args) {
 int[] array = {1,6,2,8,0,4,9,6,3,7};	//定义数组
 int min = 0;
 int temp = 0;
 for(int i=0;i<array.length;i++){	//遍历数组
 min = i;
 for(int j=i+1;j<array.length;j++){
 if(array[min]>array[j]) //判断所取的最小数和当前数的大小
 min = j;	//记下较大数位置,再次比较,直到最大
 }
 /***如果第 i数的位置不在 i,则交换****/
 if(i!=min){
 temp = array[i];
 array[i] = array[min];
 array[min] = temp;
 }
 }
 for(int i=0;i<array.length;i++){	//遍历已经排序的数组,并输出
 System.out.print(array[i]+" ");
 }
 }
}

输出结果:0 1 2 3 4 6 6 7 8 9 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值