排序查找

2018-04-28  本文已影响14人  范小白Van

冒泡排序法

class Bubble
{
    public void sort(int[] arr)
    {
        int temp=0;
        
        for(int i=0;i<arr.length-1;i++)
        {
            for(int j=0;j<arr.length-1-i;j++)
            {
                if(arr[j]>arr[j+1])
                {
                    temp=arr[j+1];
                    arr[j+1]=arr[j];
                    arr[j]=temp;
                    
                    //another method
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }
}

基本思想:

  1. 一个数组从头开始两两比较,大的数往前移动一个位置,这样一轮比较之后,数组的最后一个元素为该数组的最大值;
  2. 不考虑当前数组的最大值,将数组长度减一,再从头开始两两进行比较,循环之后得到数组中第二个最大的元素;
  3. 数组再减1,开始循环,得到第三个最大的元素。重复循环,最终得到一个从小到大排列的数组。

选择排序

class Select
{
    public void sort(int[] arr)
    {
        int temp=0;
        
        for(int i=0;i<arr.length-1;i++)
        {
            int minValue=arr[i];
            int minIndex=i;
            
            //find the index of the minimum value
            for(int j=i;j<arr.length;j++)
            {
                if(minValue>arr[j])
                {
                    minValue=arr[j];
                    minIndex=j;
                }
            }
            
            //put the minimum value into the arr[i]
            temp=arr[i];
            arr[i]=minValue;
            arr[minIndex]=temp;
        }
    }
}

基本思想:

  1. 将数组最前面的一个元素设为最小的元素;
  2. 不断和后面的元素比较,如果小于最小值,那么交换值和下标(取得最小值和下标);
  3. 将最小值放入最前面的元素,最终得到一个从小到大的数组。
上一篇下一篇

猜你喜欢

热点阅读