五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

看雪惡意程序分析與高級(jí)對(duì)抗技術(shù)

2022-10-05 22:46 作者:娜娜絡(luò)絡(luò)  | 我要投稿

快速排序

  • 每次將等待排序的數(shù)據(jù)劃分成兩部分

  • 遞歸進(jìn)行

  • 直到所有數(shù)據(jù)有序

import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;public class QuickSort { ? ?public static void main(String[] args) { ? ? ? ?int[] array = {5, 1, 6, 2, 4, 2, 3}; ? ? ? ?List<Integer> list = quickSort(Arrays.asList(5, 1, 6, 2, 4, 2, 3)); ? ? ? ?quickSortForInPlace(array); ? ? ? ?System.out.println(list); ? ?} ? ?// 分治法(Divide and conquer)需要O(n)的額外空間 ? ?public static List<Integer> quickSort(List<Integer> list) { ? ? ? ?if (list.size() <= 1) { ? ? ? ? ? ?return list; ? ? ? ?} ? ? ? ?List<Integer> left = new ArrayList<>(), pivot = new ArrayList<>(), right = new ArrayList<>(); ? ? ? ?Integer pivotValue = list.get(0); ? ? ? ?for (Integer element : list) { ? ? ? ? ? ?if (element < pivotValue) { ? ? ? ? ? ? ? ?left.add(element); ? ? ? ? ? ?} else if (element.equals(pivotValue)) { ? ? ? ? ? ? ? ?pivot.add(element); ? ? ? ? ? ?} else { ? ? ? ? ? ? ? ?right.add(element); ? ? ? ? ? ?} ? ? ? ?} ? ? ? ?return Stream.of(quickSort(left), pivot, quickSort(right)).flatMap(Collection::stream).collect(Collectors.toList()); ? ?} ? ?// 原地(in-place)分割版本 ? ?public static void quickSortForInPlace(int[] array) { ? ? ? ?quickSortPartition(array, 0, array.length - 1); ? ?} ? ?// 對(duì)數(shù)組中的某個(gè)區(qū)域進(jìn)行排序 ? ?public static void quickSortPartition(int[] array, int left, int right) { ? ? ? ?if (right > left) { ? ? ? ? ? ?// 將 [left - right] 區(qū)域分成了 ? ? ? ? ? ?// [left, pivotIndex - 1] 和 [pivotIndex + 1, right] 兩個(gè) ? ? ? ? ? ?int pivotIndex = partition(array, left, right); ? ? ? ? ? ?quickSortPartition(array, left, pivotIndex - 1); ? ? ? ? ? ?quickSortPartition(array, pivotIndex + 1, right); ? ? ? ?} ? ?} ? ?public static int partition(int[] array, int left, int right) { ? ? ? ?// 挑選最右側(cè)的作為基準(zhǔn)值 ? ? ? ?int pivotValue = array[right]; ? ? ? ?int storeIndex = left; ? ? ? ?for (int i = left; i < right; i++) { ? ? ? ? ? ?if (array[i] <= pivotValue) { ? ? ? ? ? ? ? ?swap(array, i, storeIndex); ? ? ? ? ? ? ? ?storeIndex += 1; ? ? ? ? ? ?} ? ? ? ?} ? ? ? ?swap(array, storeIndex, right); ? ? ? ?return storeIndex; ? ?} ? ?private static void swap(int[] x, int a, int b) { ? ? ? ?int t = x[a]; ? ? ? ?x[a] = x[b]; ? ? ? ?x[b] = t; ? ?}}


看雪惡意程序分析與高級(jí)對(duì)抗技術(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宝山区| 宁城县| 彭阳县| 碌曲县| 阳城县| 蒙城县| 毕节市| 临泉县| 松阳县| 招远市| 黎川县| 惠安县| 福鼎市| 瑞昌市| 东辽县| 内丘县| 马山县| 祁阳县| 泉州市| 清涧县| 韶关市| 沈丘县| 当涂县| 邯郸县| 乐至县| 上杭县| 阿坝县| 贵港市| 奉贤区| 安阳市| 博野县| 安达市| 麟游县| 舒城县| 南漳县| 镇沅| 绥滨县| 佛坪县| 象山县| 永仁县| 二连浩特市|