D04 04~07 数组排序

D0404 数组排序(排序-选择排序)
这里写图片描述
/*
对给定的数组排序:
{5,1,6,4,2,8,9}
*/

     class ArrayTest2
    {
     public static void main(String[] args)
    {
    int[] arr={3,1,5,2,7,4,9,6};
    //排序前打印
// printArray(arr);    //前面封装起来的函数
    //排序
    selectSort(arr);
    //排序后打印
//  printArray(arr);
  }

  /*
  选择排序,就是一个嵌套循环
  例如一个5个元素的数组
  比较次数:
 //**********
 //*********
 //**
 //*
所以要写俩for循环
*/


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=0;   //临时变量,都用temp来表示就行
            temp=arr[x];
            arr[x]=arr[y];
            arr[y]=temp;

        }


     }


 }

}
}

D0405 数组(排序-冒泡排序)
/*
冒泡排序:
相邻的两个元素进行比较,如果符合条件就换位
以从小到大的冒泡排序为例,一次遍历以后,最大的值到了最后一位
第二次遍历,参与运算的元素就减一。

*/

 public class ArrayTest3
 {
 public static void main(String[] args)
    {
        int[] arr=new int[]{3,1,4,6,2};
        bubbleSort(arr);
        for(int i=0;i<arr.length;i++)
        {
            System.out.print(arr[i]+",");
        }


    }

public static void bubbleSort(int[] arr)
{
    for(int x=0;x<arr.length-1;x++)   //数组如果有n个数:每循环一次,最值出现在最后位。还剩最后一个不需要了,所以需要进行n-1次操作。
    {
        for(int y=0;y<arr.length-x-1;y++)    //-x:让每次比较的元素减少,-1:避免角标越界

        {
            if(arr[y]>arr[y+1])   //相邻元素比较
            {
                int temp=arr[y];
                arr[y]=arr[y+1];
                arr[y+1]=temp;

            }


        }

    }


}



}

/*
发现无论什么排序,都需要对满足条件的元素进行位置置换。所以可以把这部分相同的代码提取出来,单独封装成一个函数。
*/

D0407 数组(-折半查找)
详见D0407.java

                2018.6.4

猜你喜欢

转载自blog.csdn.net/ak47fourier/article/details/80572844