java的排序

   //冒泡排序
    //定义一组数组,两相邻的元素对比,大的元素与小的元素交换直到大的元素排到最后


public class Demo1{


        public static void main(String[] agrs){


        int[] a={23,45,76,12,5,8,2};              //定义一组数组
        int q=0;                                  //定义一个空的值
        for(int z=0;z<a.length-1;z++)             //这是控制轮数的代码
        {
            for(int x=0;x<a.length-1-z;x++)       //这是每轮要元素对比的次数
            {
              if(a[x]>a[x+1])                     //相邻的元素对比,大的两元素交换
              {
                q=a[x];
                a[x]=a[x+1];
                a[x+1]=q;
              }
            }
        }


        for(int z=0;z<a.length-1;z++)             //这是输出已经排好序的数组
        {
          System.out.print(a[z]+",");
        }


  }


}




/*
选择排序
在未排序的序列中选择出最小值的下标,并用最小值下标的元素与未排序序列的首元素进行交换



*/
public class Demo2{
public static void main(String[] args)
{
int[] arr = {87 ,45, 34, 17, 9};              //定义一组数据

for(int i = 0;i < arr.length - 1;i++)         //这是选定未排序的序列中选择出临时的最小值的下标
{
int minIndex = i;                     //定义一个临时的最小值的下标

for(int j = i +1; j < arr.length;j++) //这是要和外循环最小值的下标的元素对比的下标
{
if(arr[minIndex] > arr[j])    //外循环临时的最小值的下标的元素对比内循环的下标的元素
{                             //如果大于就把   j的下标赋予给  minIndex
minIndex = j;
}
}
if(minIndex != i)                     //表示着如果   minIndex就是最小值就不用进入   if
{                                     //因为是最小值的话,定义的下标不变还是   i
int temp;
temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}

}


for(int i  = 0;i< arr.length;i++)             //这是输出已经排序好的数组的元素
{
System.out.println(arr[i]);
}

}

}







//选择排序2
//选定第一个下标的元素与其他的元素对比,小了后(或大的)就交换下标的元素后再依次对比一次
//还有就再换,没有就表示这元素是最小的数了。
//然后拿第二个下标的元素对后面的元素对比,后面的操作也是一样的
class Demo3{


        public static void main(String[] agrs){


        int[] a={3,5,7,1,5,8,4,2};                    //还是定义一组数据


        for(int i=0;i<a.length-1;i++)                   //选定要和后面依次对比的下标   i
        {
            for(int j=i+1;j<a.length;j++)             //要与   i  对比的下标   j(因为第一个下标就是i 所以要+1)
            {
                if(a[i]>a[j])                         //如果 下标 i 的元素大于  j的元素
                {                                     //那么就交换下标的元素  然后 拿i的元素再和后面的元素对比
                    int b=a[i];                       //有,再换再比     没就结束这次循环
                    a[i]=a[j];
                    a[j]=b;                           //第二次循环   i=1再与后面的元素比  有,再换再比     没就结束这次循环
                }                                     //以下的循环一样
            }
        }
        
        for(int i=0;i<a.length;i++)                   //输出排序好的数组  a  的元素
        {
           System.out.print(a[i]+",");
        }        


  }


}





//插入排序
//每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的有序序列中的适当位置
//直到全部记录插入完成为止。
class Demo4{


        public static void main(String[] agrs){


        int[] a={3,6,8,5,9,4};
        for(int i=1;i<a.length;i++)           //创建一个临时的数组  a[0]与a[1]
        {
            for(int j=i-1;j>=0;j--)           //表示元素  a[0] 与 a[1]对比
            {                                 //如果大于就交换元素  不是就不交换元素
               if(a[j]>a[j+1])
               {
                 int e=a[j];                  //第二次插入一个临时的元素   a[2]
                 a[j]=a[j+1];                 //然后 a[0]与a[1]对比 ,a[1]a[2]对比
                 a[j+1]=e;                    //大于就交换元素  不是就不交换元素
                }                             //以上步骤循环   形成有序区间a[0,1,2,3,4,5]
             }
         }
         for(int i=0;i<a.length;i++)          //输出数组 a的元素
         {
            System.out.print(a[i]+",");        
         }


        


  }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值