摘要:快速排序快速排序的話,應用了分治的思想,選取一個中間值,把小于它的值放左邊,大于它的值放右邊,然后再對這兩個分組應用同樣的方法,遞歸下去。挖坑挖坑是自己快速回憶實現這個算法的形象叫法。
快速排序
快速排序的話,應用了分治的思想,選取一個中間值,把小于它的值放左邊,大于它的值放右邊,然后再對這兩個分組應用同樣的方法,遞歸下去。
挖坑挖坑是自己快速回憶實現這個算法的形象叫法。
如果現在有數組
[-1, 2, 4, 7, 8, -7, 6, 20]挖出第一個位置的值,存起來,現在有一個空的坑位了,需要填上 剛開始的時候,i指向初始的位置,j指向末尾的位置,現在i指向的地方有坑位,j開始往前走,遇到的數如果比中間值(這里是-1)小的話,把當前j指向位置的數挖掉,給i上的位置填補上,現在j的位置是空的 那現在i(+1之后)開始活動了,向前跑,如果碰到i指向位置的值比中間值(這里是-1)大,則把當前i指向位置的數挖掉,給j的位置補上,然后重復j運動的過程 以上過程最終i和j會相遇(跳出循環點),那里正好有個空的坑位給中間值 然后應用分治策略,對剩下的兩個分組使用同樣的手段 實現 Java實現
/** * 快速排序 * @param arr int[] 排序數組 * @param start int 開始位置 * @param end int 結尾位置 */ 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的實現
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的實現
$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);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68028.html
摘要:快速排序快速排序的話,應用了分治的思想,選取一個中間值,把小于它的值放左邊,大于它的值放右邊,然后再對這兩個分組應用同樣的方法,遞歸下去。挖坑挖坑是自己快速回憶實現這個算法的形象叫法。 快速排序 快速排序的話,應用了分治的思想,選取一個中間值,把小于它的值放左邊,大于它的值放右邊,然后再對這兩個分組應用同樣的方法,遞歸下去。 挖坑 挖坑是自己快速回憶實現這個算法的形象叫法。如果現在有數...
摘要:快速排序快速排序的話,應用了分治的思想,選取一個中間值,把小于它的值放左邊,大于它的值放右邊,然后再對這兩個分組應用同樣的方法,遞歸下去。挖坑挖坑是自己快速回憶實現這個算法的形象叫法。 快速排序 快速排序的話,應用了分治的思想,選取一個中間值,把小于它的值放左邊,大于它的值放右邊,然后再對這兩個分組應用同樣的方法,遞歸下去。 挖坑 挖坑是自己快速回憶實現這個算法的形象叫法。如果現在有數...
摘要:使開發人員可以編寫高性能的異步并發,服務。使用作為網絡通信框架,可以使企業研發團隊的效率大大提升,更加專注于開發創新產品。總之,這個庫讓可以常駐內存,并提供了,等功能。 swoole 使 PHP 開發人員可以編寫高性能的異步并發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。Swoole 可以廣泛應用于互聯網、移動通信、企業軟件、云計算、網絡游戲、物聯網(...
摘要:的話,是一個遵循規范微型的框架,作者這樣說大致意思的核心工作分發了請求,然后調用回調函數,返回一個對象。執行的方法時,我們從中取出的依賴,這時候,注冊的回調函數被調用,返回實例。 Slim Slim的話,是一個遵循PSR (PSR-7)規范微型的框架,作者這樣說: Slim is a PHP micro framework that helps you quickly write si...
摘要:使開發人員可以編寫高性能的異步并發,服務。使用作為網絡通信框架,可以使企業研發團隊的效率大大提升,更加專注于開發創新產品。總之,這個庫讓可以常駐內存,并提供了,等功能。 swoole 使 PHP 開發人員可以編寫高性能的異步并發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。Swoole 可以廣泛應用于互聯網、移動通信、企業軟件、云計算、網絡游戲、物聯網(...
閱讀 3960·2021-11-24 09:38
閱讀 1225·2021-10-19 11:42
閱讀 1829·2021-10-14 09:42
閱讀 2154·2019-08-30 15:44
閱讀 544·2019-08-30 14:04
閱讀 2888·2019-08-30 13:13
閱讀 1949·2019-08-30 12:51
閱讀 956·2019-08-30 11:22