国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

算法__數(shù)組排序_冒泡排序&直接選擇排序&快速排序

這篇具有很好參考價值的文章主要介紹了算法__數(shù)組排序_冒泡排序&直接選擇排序&快速排序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


本篇主要講解數(shù)組排序相關(guān)的三種算法,冒泡排序,直接排序和快速排序。

冒泡排序

算法說明

在數(shù)組中依次比較相鄰的兩個元素,當(dāng)滿足左側(cè)大于右側(cè)時(升序排序),則兩個位置的元素互換。如此重復(fù),最終即可完成數(shù)組的排序。

代碼實現(xiàn)

public static void bubbleSort(int[] array){
// 循環(huán)輪數(shù)比數(shù)組大小小1輪
	for(int i = 1; i < array.length; i++){
	// 循環(huán)1輪后,最大的元素,已經(jīng)排到數(shù)組后面,不用再參與比較
		for(int j = 0; j < array.length - i; j++){
			if(array[j] > array[j+1]){
				int temp = array[j];
				array[j] = array[j+1];
				array[j+1] = temp;
			}
		}
	}
}

直接選擇排序

算法說明

依次找出數(shù)組中最小值的索引,并和數(shù)組左側(cè)的元素進行位置交換。
這樣從整體上就是數(shù)組的左側(cè)部分是按照由小到大依次排列的有序數(shù)組。

代碼實現(xiàn)

public static void selectSort(int[] array){
	for(int i = 0; i < array.length - 1; i++){
	// 記錄比較的元素和索引
		int min = array[i];
		int minIndex = i;
		for(int j = i + 1; j < array.length; j++){
			if(array[j] < min){
			// 記錄最小值的索引和值
				minIndex = j;
				min = array[j];
			}
		}
		// 將最小值與前面的元素交換
		int temp = array[minIndex];
		array[minIndex] = array[i];
		array[i] = temp;
	}
}

快速排序

算法說明

選擇一個基準(zhǔn)比較值,然后依據(jù)這個基準(zhǔn)值,將數(shù)組分隔為兩個部分,左側(cè)的部分為所有小于基準(zhǔn)的值,右側(cè)部分為所有大于基準(zhǔn)的值。文章來源地址http://www.zghlxwxcb.cn/news/detail-733849.html

代碼實現(xiàn)

/**
     * 快速排序法,排序數(shù)組
     * @author Ethan
     * @description
     * @param array
     */
    public static void quickSort(int[] array){
        subSort(array,0,array.length - 1);
    }

    /**
     * 快速排序法的核心算法
     * @author Ethan
     * @description
     * @param array 被排序的數(shù)組
     * @param start 起始索引
     * @param end 結(jié)束索引
     */
    public static void subSort(int[] array, int start, int end){
        if(start < end){
//            選取數(shù)組最左邊的元素作為判斷基礎(chǔ)
            int base = array[start];
            int left = start;
            int right = end + 1;
            while(true){
//                從左向右遍歷遇到大于基數(shù)的索引停止,left指向大于基數(shù)的索引
                while(left < end && array[++left] <= base)
                    ;
//                從右向左遍歷找到小于基數(shù)的索引停止,right指向小于基數(shù)的索引
                while(right > start && array[--right] >= base)
                    ;
//                當(dāng)大于基數(shù)的索引在小于基數(shù)的索引前時,進行交換,讓小于基數(shù)的值都在左邊,大于基數(shù)的值都在右邊
                if(left < right) {
                    swap(array,left,right);
                }else{
                    break;
                }
            }
//            將基數(shù)和小于基數(shù)的最右邊的元素位置對換
            swap(array,start,right);
//            遞歸排序分割后的數(shù)組
            subSort(array,start,right-1);
            subSort(array,right + 1,end);
        }
    }

    /**
     * 交換數(shù)組中兩個索引處的數(shù)值
     * @author Ethan
     * @description
     * @param array
     * @param left
     * @param right
     */
    public static void swap(int[] array, int left, int right){
        int temp = array[left];
        array[left] = array[right];
        array[right] = temp;
    }

到了這里,關(guān)于算法__數(shù)組排序_冒泡排序&直接選擇排序&快速排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包