选择排序和冒泡排序

//给指定数进行排序 选择比较
//{5,1,6,4,2,8,9}
/**排序思想:
* 0 1 2 3 4 5 下角标
* 3 1 4 2 7 5 数组元素
* 使用嵌套循环
* 内循环结束一次 最止出现在头角标位置上
* */
import java.util.*;
public class ArrayTest2{

public static void selectSort(int[] arr)
{
    //核心代码
    for(int x=0 ;x<arr.length-1;x++)
    {
        for(int y=x+1;y<arr.length;y++)
        {
            if(arr[x]>arr[y])
            {
                int temp = arr[x];
                arr[x] = arr[y];
                arr[y] = temp;
            }
        }
    }
}   
/**冒泡排序法排序
 *     相邻的两个元素进行比较一直向后走 如果符合条件换位 
 *     第一轮比较完了  最大的数肯定是在最后 相应的大数向后去
 *     在下一轮时 长度在依次递减 增加一圈少个元素
 * 
 * */
public static void bubbleSort(int[] arr)
{
          for(int x=0;x<arr.length-1;x++)
          {
              for(int y=0;y<arr.length-x-1;y++)
              {
                if(arr[y+1]<arr[y]);//-x:让每一次比较的元素逐级减少 -1:避免角标越界
                {
                    int temp = arr[y];
                    arr[y] = arr[y+1];
                    arr[y+1] = temp;
                    //可以直接用下面定义的swap
                }
              }
          }
}
    public static void main(String[] args)
    {
        int[] arr1 = {7,6,4,2,8,9};

        printArray(arr1);

        selectSort(arr1);

        printArray(arr1);

        bubbleSort(arr1);

        printArray(arr1);

        Arrays.sort(arr1);//真实开发下用的 直接用就行 可直接对数组进行排序

        printArray(arr1);
    }

    public static void printArray(int[] arr)
    {
        System.out.print("[");
        for(int x=0;x<arr.length;x++)
        {
            if(x!=arr.length-1)
                System.out.print(arr[x]+",");
            else
                System.out.println("]");
        }

    }   
    /*发现无论什么排序 都需要对满足条件的元素进行位置转换
     * 所以可以把这部分相同的代码提取出来 单独封装成一个函数
     * */
    public static void swap(int[] arr,int a,int b)
    {
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;

    }

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值