算法
算法
thefist11
难以忘记编程路上领导和好友的细致指导,所以必须努力!(真诚希望大家多多指导!)
展开
-
kth (2)快速选择
static int partition(std::vector<int>& nums, int start, int end) { int pivot = nums[end], i = start; for (int j = start; j < end; ++j) { if (nums[j] < pivot) { swap(nums[j], nums[i++]);原创 2022-03-24 22:48:15 · 217 阅读 · 0 评论 -
kth (1)概述
kth既是寻找未排序数组中第k大的数1. 排序法将数组排序后,返回第k个元素。. 复杂度时间 O(NlogN)空间 O(1)2. 优先队列遍历数组时将数字加入优先队列(堆),一旦堆的大小大于k就将堆顶元素去除,确保堆的大小为k。遍历完后堆顶就是返回值。. 复杂度时间 O(NlogK)空间 O(K)int findKthLargest(int a[], int nSize, int k){ // Creating a min-heap using priority queue原创 2022-03-24 22:46:53 · 562 阅读 · 0 评论 -
排序 (5)计数排序“概念”
1. 应用场景一是需要排序的元素必须是整数,二是排序元素的取值要在一定范围内,并且比较集中。1.1 思想step1. 统计数组中每个值为 X 的元素出现的次数,存入数组 C 的第X 项step2. 累加元素出现次数(计算不超过 X包括X 的元素的个数)step3. 反向填充目标数组:将元素X依次逐个放入到适当的位置 void countSort(int arr[], int len) { //1.获得数列的最大值 int max = arr[0];原创 2022-03-24 22:53:13 · 208 阅读 · 0 评论 -
排序 (5)桶排序“概念”
1. 应用场景数组的长度很大,但很多数都集中在一个区间。eg. 数万名员工年龄排序。1.1 思想step1. 将元素分发到对应的桶中step2. 对每个桶里面的数据进行排序step3. 合并所有桶的数据1.2 内部数据结构使用链表实现...原创 2022-03-24 23:37:19 · 96 阅读 · 0 评论 -
排序 (4)插入排序
1. 思想将无序区的数据插入到有序区void insertionSort(int arr[], int len) { for (int i = 1; i < len; i++) { int key = arr[i]; int j = i - 1; while ((j >= 0) && (key < arr[j])) { arr[j + 1] = arr[j]; j-原创 2022-03-19 08:53:25 · 861 阅读 · 0 评论 -
排序 (3)选择排序
1. 思路索引递增,针对每个索引i,查找a[i+1, …n]的最小的数min,然后swap(a[i], a[min]).2.template<typename T> //整數或浮點數皆可使用,若要使用物件(class)時必須設定大於(>)的運算子功能void selection_sort(std::vector<T>& arr) { for (int i = 0; i < arr.size() - 1; i++) {原创 2022-03-19 08:39:06 · 308 阅读 · 0 评论 -
排序 (2)快速排序-多个数组
1. 应用场景a.有两个长度分别为m和n的未排序int数组A和Bb.请写一个func将两个数组的进行排序将最小的m个int以从小到大的顺序存储在数组A, 最大的n个数以从小到到的顺序存储在数组B注意:m, n的长度可能很大所以请注意空间使用情况例子:转换前:a := [98, 67, 91, 99, 13]b := [97, 35, 88]转换后:a := [13, 35, 67, 88, 91]b := [97, 98, 99]2. 使用快速排序,把两个组成当成一个数组。#incl原创 2022-03-24 23:33:17 · 279 阅读 · 0 评论 -
排序 (2)快速排序-双路排序
1. 双路排序partition有两种思路,一种是从某侧循环,还有一种是双路排序(从两端往中间逼近) //从两侧向中间逼近int Paritition(int A[], int low, int high) { int pivot = A[low]; while (low < high) { while (low < high && A[high] >= pivot) { --high; }原创 2022-03-19 07:30:24 · 289 阅读 · 0 评论 -
排序 (2)快速排序
1.1/** * 快速排序:C++ * * @author skywang * @date 2014/03/11 */#include <iostream>using namespace std;/* * 快速排序 * * 参数说明: * a -- 待排序的数组 * l -- 数组的左边界(例如,从起始位置开始排序,则l=0) * r -- 数组的右边界(例如,排序截至到数组末尾,则r=a.length-1) */void q...原创 2022-03-18 23:45:57 · 276 阅读 · 0 评论
分享