国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Just for fun——迅速寫完快速排序

weakish / 3230人閱讀

摘要:快速排序快速排序的話,應(yīng)用了分治的思想,選取一個(gè)中間值,把小于它的值放左邊,大于它的值放右邊,然后再對(duì)這兩個(gè)分組應(yīng)用同樣的方法,遞歸下去。挖坑挖坑是自己快速回憶實(shí)現(xiàn)這個(gè)算法的形象叫法。

快速排序

快速排序的話,應(yīng)用了分治的思想,選取一個(gè)中間值,把小于它的值放左邊,大于它的值放右邊,然后再對(duì)這兩個(gè)分組應(yīng)用同樣的方法,遞歸下去。

挖坑

挖坑是自己快速回憶實(shí)現(xiàn)這個(gè)算法的形象叫法。
如果現(xiàn)在有數(shù)組

[-1, 2, 4, 7, 8, -7, 6, 20]

挖出第一個(gè)位置的值,存起來,現(xiàn)在有一個(gè)空的坑位了,需要填上

剛開始的時(shí)候,i指向初始的位置,j指向末尾的位置,現(xiàn)在i指向的地方有坑位,j開始往前走,遇到的數(shù)如果比中間值(這里是-1)小的話,把當(dāng)前j指向位置的數(shù)挖掉,給i上的位置填補(bǔ)上,現(xiàn)在j的位置是空的

那現(xiàn)在i(+1之后)開始活動(dòng)了,向前跑,如果碰到i指向位置的值比中間值(這里是-1)大,則把當(dāng)前i指向位置的數(shù)挖掉,給j的位置補(bǔ)上,然后重復(fù)j運(yùn)動(dòng)的過程

以上過程最終i和j會(huì)相遇(跳出循環(huán)點(diǎn)),那里正好有個(gè)空的坑位給中間值

然后應(yīng)用分治策略,對(duì)剩下的兩個(gè)分組使用同樣的手段 實(shí)現(xiàn) Java實(shí)現(xiàn)
/**
  * 快速排序
  * @param arr int[] 排序數(shù)組
  * @param start int 開始位置
  * @param end int 結(jié)尾位置
  */
private static void quickSort(int[] arr, int start, int end) {
    if(end - start == 1) {
        if(arr[start] > arr[end]) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    } else if (end - start > 1) {
        int middle = arr[start];
        int i = start;
        int j = end;
        while (i != j && i <= end && j >= start) {
            while (arr[j] >= middle && j > i) {
                j--;
            }
            if(j > i) {
                arr[i] = arr[j];
                i++;
            }
            while (arr[i] <= middle && i < j) {
                i++;
            }
            if(i < j) {
                arr[j] = arr[i];
                j--;
            }
        }
        arr[i] = middle;
        quickSort(arr, start, i - 1);
        quickSort(arr, i + 1, end);
    }
}
Javascript的實(shí)現(xiàn)
let arr = [2, -1, -2, 100, 5];

function quickSort(arr, start, end) {
    if(end - start === 1) {
        if(arr[start] > arr[end]) {
            let temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    } else if (end - start > 1) {
        let middle = arr[start];
        let i = start;
        let j = end;
        while (i !== j && i <= end && j >= start) {
            while (arr[j] >= middle && j > i) {
                j--;
            }
            if(j > i) {
                arr[i] = arr[j];
                i++;
            }
            while (arr[i] <= middle && i < j) {
                i++;
            }
            if(i < j) {
                arr[j] = arr[i];
                j--;
            }
        }
        arr[i] = middle;
        quickSort(arr, start, i - 1);
        quickSort(arr, i + 1, end);
    }
}

quickSort(arr, 0, arr.length - 1);
console.log(arr);
PHP的實(shí)現(xiàn)
 $arr[$end]) {
            $temp = $arr[$start];
            $arr[$start] = $arr[$end];
            $arr[$end] = $temp;
        }
    } elseif ($end - $start > 1) {
        $middle = $arr[$start];
        $i = $start;
        $j = $end;
        while ($i !== $j && $i <= $end && $j >= $start) {
            while ($arr[$j] >= $middle && $j > $i) {
                $j--;
            }
            if($j > $i) {
                $arr[$i] = $arr[$j];
                $i++;
            }
            while ($arr[$i] <= $middle && $i < $j) {
                $i++;
            }
            if($i < $j) {
                $arr[$j] = $arr[$i];
                $j--;
            }
        }
        $arr[$i] = $middle;
        quickSort($arr, $start, $i - 1);
        quickSort($arr, $i + 1, $end);
    }
}

quickSort($arr, 0, count($arr) - 1);
print_r($arr);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26090.html

相關(guān)文章

  • Just for fun——迅速寫完快速排序

    摘要:快速排序快速排序的話,應(yīng)用了分治的思想,選取一個(gè)中間值,把小于它的值放左邊,大于它的值放右邊,然后再對(duì)這兩個(gè)分組應(yīng)用同樣的方法,遞歸下去。挖坑挖坑是自己快速回憶實(shí)現(xiàn)這個(gè)算法的形象叫法。 快速排序 快速排序的話,應(yīng)用了分治的思想,選取一個(gè)中間值,把小于它的值放左邊,大于它的值放右邊,然后再對(duì)這兩個(gè)分組應(yīng)用同樣的方法,遞歸下去。 挖坑 挖坑是自己快速回憶實(shí)現(xiàn)這個(gè)算法的形象叫法。如果現(xiàn)在有數(shù)...

    JowayYoung 評(píng)論0 收藏0
  • Just for fun——迅速寫完快速排序

    摘要:快速排序快速排序的話,應(yīng)用了分治的思想,選取一個(gè)中間值,把小于它的值放左邊,大于它的值放右邊,然后再對(duì)這兩個(gè)分組應(yīng)用同樣的方法,遞歸下去。挖坑挖坑是自己快速回憶實(shí)現(xiàn)這個(gè)算法的形象叫法。 快速排序 快速排序的話,應(yīng)用了分治的思想,選取一個(gè)中間值,把小于它的值放左邊,大于它的值放右邊,然后再對(duì)這兩個(gè)分組應(yīng)用同樣的方法,遞歸下去。 挖坑 挖坑是自己快速回憶實(shí)現(xiàn)這個(gè)算法的形象叫法。如果現(xiàn)在有數(shù)...

    alaege 評(píng)論0 收藏0
  • Just for fun——基于Swoole做個(gè)小框架

    摘要:使開發(fā)人員可以編寫高性能的異步并發(fā),服務(wù)。使用作為網(wǎng)絡(luò)通信框架,可以使企業(yè)研發(fā)團(tuán)隊(duì)的效率大大提升,更加專注于開發(fā)創(chuàng)新產(chǎn)品。總之,這個(gè)庫讓可以常駐內(nèi)存,并提供了,等功能。 swoole 使 PHP 開發(fā)人員可以編寫高性能的異步并發(fā) TCP、UDP、Unix Socket、HTTP,WebSocket 服務(wù)。Swoole 可以廣泛應(yīng)用于互聯(lián)網(wǎng)、移動(dòng)通信、企業(yè)軟件、云計(jì)算、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)(...

    CoreDump 評(píng)論0 收藏0
  • Just for fun——Slim借力Swoole

    摘要:的話,是一個(gè)遵循規(guī)范微型的框架,作者這樣說大致意思的核心工作分發(fā)了請(qǐng)求,然后調(diào)用回調(diào)函數(shù),返回一個(gè)對(duì)象。執(zhí)行的方法時(shí),我們從中取出的依賴,這時(shí)候,注冊(cè)的回調(diào)函數(shù)被調(diào)用,返回實(shí)例。 Slim Slim的話,是一個(gè)遵循PSR (PSR-7)規(guī)范微型的框架,作者這樣說: Slim is a PHP micro framework that helps you quickly write si...

    leejan97 評(píng)論0 收藏0
  • Just for fun——基于Swoole做個(gè)小框架

    摘要:使開發(fā)人員可以編寫高性能的異步并發(fā),服務(wù)。使用作為網(wǎng)絡(luò)通信框架,可以使企業(yè)研發(fā)團(tuán)隊(duì)的效率大大提升,更加專注于開發(fā)創(chuàng)新產(chǎn)品。總之,這個(gè)庫讓可以常駐內(nèi)存,并提供了,等功能。 swoole 使 PHP 開發(fā)人員可以編寫高性能的異步并發(fā) TCP、UDP、Unix Socket、HTTP,WebSocket 服務(wù)。Swoole 可以廣泛應(yīng)用于互聯(lián)網(wǎng)、移動(dòng)通信、企業(yè)軟件、云計(jì)算、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)(...

    fevin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<