快速排序/二分插入排序的swift以及Java實現

常常會用到排序的算法,好比:冒泡法,選擇法,快速排序,二分插入排序等等.前面兩個就不說了,貼出來本身寫的快速排序和二分插入排序的SwiftJava的代碼實現,喜歡的話control+C拿去用.算法

swift實現快速排序和二分插入排序算法:swift

(想運行的話,直接複製代碼,替換掉控制器裏的viewDidLoad方法就行了)ide

 

override func viewDidLoad() {測試

        super.viewDidLoad()ui

        // Do any additional setup after loading the view, typically from a nib..net

 

        var array : Array<Int> = [2,1,3,5,4,6,8,7,9,10]排序

        //quickSort(&array, left: 0, right: 9)get

        binarySort(&array)it

        for i in 0 ... array.count - 1{io

            print(array[i])

        }

    }

 

    //快速排序

    func quickSort(inout array:Array<Int>,left:Int,right:Int){

        if left > right {

            return

        }

        var base,temp,i,j:Int

        i = left

        j = right

        base = array[left]

        while i < j {

            while array[j] >= base && i < j {

                j -= 1

            }

            while array[i] <= base && i < j {

                i += 1

            }

            if i < j {

                temp = array[i]

                array[i] = array[j]

                array[j] = temp

            }

        }

        array[left] = array[i]

        array[i] = base

        

        quickSort(&array, left: left, right: i - 1)

        quickSort(&array, left: i + 1, right: right)

    }

    

    //二分插入法排序

    func binarySort(inout array : Array<Int>){

        var low,mid,high,base : Int

        for i in 1 ... array.count - 1{

            low = 0

            high = i - 1

            base = array[i]

            while low <= high {

                mid = (low + high)/2

                if array[mid] >= base{

                    low = mid + 1

                }else if array[mid] <= base{

                    high = mid - 1

                }

            }

            for var j = i - 1; j >= high + 1; j -= 1{

                array[j + 1] = array[j]

            }

            array[high + 1] = base;

        }

    }

 

 

 

Java實現快速排序:

直接貼出來整個類了,畢竟不長,建立新文件把全部代碼拷進去就能夠運行了.

 

 

public class Sort{

    public static void quickSort(int[] array,int left,int right){

        if (left > right){

            return;

        }

        int base,temp,i,j;

        i = left;

        j = right;

        base = array[left];

        while(i < j){

            while(array[j] <= base && i < j){

                j --;

            }

            while(array[i] >= base && i < j){

                i ++;

            }

            if(i < j){

                temp = array[i];

                array[i] = array[j];

                array[j] = temp;

            }

        }

        array[left] = array[i];

        array[i] = base;

        quickSort(array,left,i-1);

        quickSort(array,i + 1,right);

    }

    

 

    public static void main(String[] args){

        int[] array = new int[]{2,1,4,3,6,5,8,7,9,10};

        quickSort(array,0,9);

        for(int i = 0 ; i < 10 ; i ++){

            System.out.println(array[i]);

        }

    }

}

 

 

Java實現二分插入法排序:

 

public class BinarySort{

    public static void main(String[] args){

        int[] array = new int[]{2,3,1,4,6,5,8,7,9,10};

        binarySort(array);

        for(int numebr : array){

            System.out.println(numebr);

        }

        

    }

    public static void binarySort(int[] array){

        int low,mid,high,base;

        for(int i = 1; i < array.length ; i++){

            low = 0;

            high = i - 1;

            base = array[i];

            while(low <= high){

                mid = (low + high) / 2;

                if(array[mid] > base){

                    low = mid + 1;

                }else if (array[mid] < base){

                    high = mid - 1;

                }

            }

            for (int j = i - 1; j >= high + 1; j -= 1){

                array[j + 1] = array[j];

            }

            array[high + 1] = base;

        }

    }

}

 

以上就是使用swift和Java實現的快速排序算法和二分插入算法的實現及測試用例.不足之處,歡迎指正.

相關文章
相關標籤/搜索