首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C++信息学奥赛

    杨校老师课堂之排序算法——标记应用专项题单

    ]=1 表示数字 5 出现过)空间换时间:通过 O (1) 时间复杂度完成元素查询与标记统计与筛选计数统计:通过 a[t]++ 统计数字出现次数(第三套代码)补集思想:输出未被标记的元素(第二套代码)排序输出 例如走过2 7 4 1 8,则请告诉他:3 5 6 9 10没有走过。【输入格式】输入一行,五个数字,表示已经走过的路径编号。【输出格式】输出一行,五个数字,表示没有走过的路径编号。 【输入样例】2 7 4 1 8【输出样例】3 5 6 9 10#include <iostream>using namespace std;int a[15] = {0}; // 定义标记数组,用于标记 样例输入54 1 3 2 3输出4 3 2 1#include <iostream>using namespace std;int a[105] = {0}; // 定义标记数组,用于标记1-100范围内的数字是否出现过 { // 若数组位置i为1,说明数字i出现过 cout << i << " "; // 输出该数字,用空格分隔 } } return 0;}3.

    23800编辑于 2025-07-03
  • 来自专栏全栈程序员必看

    java数组排序_JAVA数组排序

    ; i++) { arr[i] = (int) (Math.random() * 100) + 1; //随机赋值 System.out.print(arr[i] + ” “); } /* *冒泡排序法 } System.out.println(); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + ” “); //排序后的数组 } /* * 数组 */ for(int i=0;i0&&arr[i-1]==arr[i]) break; System.out.print(arr[i] + ” “); }//后的数组 }

    1.6K30编辑于 2022-09-07
  • 来自专栏全栈程序员必看

    List3种方式

    一、背景 1.在实战中list是非常频繁的,下面就讲讲它的三种用法。 二、第一种(原始代码) 1.测试类 public class DemoTest { public static void main(String[] args) { ArrayList <String> list = Lists.newArrayList("02","01","01","02","03"); System.out.println("原始的方法"); [02, 01, 03] 三、第二种方法 1.Set缺点是,元素是无序的 2.测试类 public class DemoTest { public static void main(String "); Set<String> set = Sets.newHashSet(list); System.out.println(set); } } 3.结果 set

    56910编辑于 2022-09-01
  • 来自专栏技术社区

    python3数组

    input_list = [1,1,2,2,3,3,4,5,6,7,33,2,4,6,7,4,2] def functionList1(data): return list(set(data data[i] not in new_data: new_data.append(data[i]) return new_data def functionList3( data).tolist() print(functionList1(input_list)) print(functionList2(input_list)) print(functionList3(

    89820编辑于 2022-06-17
  • 来自专栏搞前端的李蚊子

    数组对象的然后排序

    data: 1 },{ name: 'fff', data: 4 }, ]; const sort = arr => { // [val.name] = val; newArr.push(val); }; }); // 最简单的使用sort let sortArr = newArr.sort((a, b) => { return a.data - b.data; }); // 冒泡排序

    1.3K130发布于 2018-03-14
  • 来自专栏技术进阶

    Golang数组&切片

    合并两个整型切片,返回没有重复元素的切片,有两种策略 1. 通过双重循环来过滤重复元素(时间换空间) // 通过两循环过滤重复元素 func RemoveRepByLoop(slc []int) []int { result := []int{} / 效率第一,如果节省计算时间,则可以采用如下方式 // 元素 func RemoveRep(slc []int) []int{ if len(slc) < 1024 { //

    4.8K20编辑于 2022-09-21
  • 来自专栏分享学习

    HashSet内部的自动排序原理

    Hashset内部排序是根据ASCII码进行排序 HashSet的自动取是根据hashcode 和 equals 进行比较的,而不是直接使用等号,因为对于引用类型的数据来说,等于号比较的是引用之间的地址

    1.5K20发布于 2021-05-20
  • 来自专栏Hadoop数据仓库

    MySQL 数字辅助表排序、行转列

    https://blog.csdn.net/wzy0623/article/details/53895786 一、需求 一个字段有多行记录,查询结果为排序的一行记录,例如记录值为: 1,2,4 1,4,5 2,3 23,56,67 3,4 要求查询结果为: 1,2,3,4,5,23,56,67 二、方案 使用数字辅助表实现 -- 建立数字辅助表 create table 建立测试表 create table t1 ( a varchar(100) ); insert into t1 values('1,2,4'),('1,4,5'),('2,3' ),('23,56,67'),('3,4'); commit; -- 查询 select group_concat(a) from (select

    2.7K10发布于 2019-05-25
  • 来自专栏用户1175783的专栏

    # 排序

    # 排序 # 原理 求出无序集合的最大值与最小值(这里的最小值指存在负数的情况),创建对应的数组长度 length=max+1 这里要处理一下负数 if min<0: length+=abs(min) 该length就是数组的长度,并创建这个数组将所有值初始化为0 然后遍历无须数组,修改中元素的个数(数组所以对应的值就是无需数组中相同值的个数) 最后只需要将数组中值大于 # 实现 inputArr = [ 11,10,199383, 34, -1,-32,-29, 4, 0, 34, 5, 4, 36, 1, 8, 123, 453, 1008] print("未排序集合 minItem>item): minItem=item # 最小值,最大值 print("min:{0}\tmax:{1}".format(minItem,maxItem)) # 创建数组 0): sortArr[sortIndex]=index bigArr[index]-=1 sortIndex+=1 print("已排序集合

    44820发布于 2019-09-10
  • 来自专栏Jed的技术阶梯

    排序

    排序是一种排序的思想,其实现包括计数排序和基数排序两种,冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序都是基于比较的排序,而排序提出了一种新的思路,即基于数据状态的排序。 1. 排序的思想 (1) 得到无序数组的取值范围 ? (2) 根据取值范围"创建"对应数量的"" ? (3) 遍历数组,把每个元素放到对应的""中 ? 复杂度 时间复杂度:遍历数组求最大值最小值为O(n),遍历数组放入""中复杂度为O(n),遍历取出每个值的复杂度为O(n),最终的时间复杂度为O(3n),也就是O(n) 空间复杂度:额外的空间取决于元素的取值范围 ,总的来说为O(n) 稳定性:排序是否稳定取决于""用什么数据结构实现,如果是队列,那么可以保证相同的元素"取出去"后的相对位置与"放进来"之前是相同的,即排序是稳定的,而如果用栈来实现"",则排序一定是不稳定的 ,因为排序可以做到稳定,所以排序是稳定的排序算法 3.

    1.2K60发布于 2019-05-09
  • 来自专栏数据结构与算法

    排序

    3. 排序        排序的思想是若待排序的记录的关键字在一个明显有限范围内(整型)时,可设计有限个有序,每个桶装入一个值(当然也可以装入若干个值),顺序输出各的值,将得到有序的序列。 1 #include<iostream> 2 using namespace std; 3 int a[100001]; 4 int b[100001]; 5 int maxn=-1; 6 int

    61190发布于 2018-04-12
  • 来自专栏用户2442861的专栏

    排序

    每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用排序进行排序)。排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,排序使用线性时间(Θ(n))。 但排序并不是 比较排序,他不受到 O(n log n) 下限的影响。        总共有100个。然后对A[1..n]从头到尾扫描一遍,把每个A[i]放入对应的B[j]中。 然后再对这100个中每个里的数字排序,这时可用冒泡,选择,乃至快排,一般来说任何排序法都可以。 如果所有的数字都落在同一个中,那就退化成一般的排序了。 当然排序的空间复杂度为O(N+M),如果输入数据非常庞大,而的数量也非常多,则空间代价无疑是昂贵的。此外,排序是稳定的。

    76240发布于 2018-09-14
  • 来自专栏我的博客

    排序

    排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。 每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用排序进行排序) 思想: 设待排序序列的元素取值范围为0到m,则我们新建一个大小为m+1的临时数组并把初始值都设为0,遍历待排序序列 ,把待排序序列中元素的值作为临时数组的下标,找出临时数组中对应该下标的元素使之+1;然后遍历临时数组,把临时数组中元素大于0的下标作为值按次序依次填入待排序数组,元素的值作为重复填入该下标的次数,遍历完成则排序结束序列有序 示例: $v){ for($i = 0; $i < $v; $i++) { echo $k; } } 应用大量数据排序 比如9亿不重复的9位数字排序,可以初始化

    72660发布于 2018-04-28
  • 来自专栏后端知识体系

    排序

    # LeetCode-排序 排序算法回顾 示例1 输入: nums = [4,0,1,2,0,5] 输出: [0,0,1,2,4,5] # 解题思路 排序(Bucket Sort)的原理很简单 在排序时,创建容量为MAX的数组r,并将数组元素都初始化为0;将容量为MAX的数组中的每一个单元都看作一个""。 在排序时,逐个遍历数组a,将数组a的值,作为"数组r"的下标。 当a中数据被读取时,就将的值加1。例如,读取到数组a[3]=5,则将r[5]的值+1。 ,在计数排序中,每个只存储相同的元素 而排序中每个存储一定范围的元素,通过映射函数,将待排序数组中的元素存储到各个对应的中 之后对每个中的元素进行排序 最后将非空桶中的元素逐个放入原序列中 排序需要尽量保证元素分散均匀 N,共分为M个,主要步骤有: N次循环,将每个元素装入对应的中 M次循环,对每个中的数据进行排序(平均每个有N/M个元素) 一般使用较为快速的排序算法,时间复杂度为O(nlogn),实际的排序过程是以链表形式插入的

    40930编辑于 2022-07-14
  • 来自专栏Python绿色通道

    Scrapy实战3:URL策略

    一、前言 今天给大家分享的是,Python爬虫里url策略及实现。 二、url及策略简介 1.url     从字面上理解,url即去除重复的url,在爬虫中就是去除已经爬取过的url,避免重复爬取,既影响爬虫效率,又产生冗余数据。 2.url策略     从表面上看,url策略就是消除url重复的方法,常见的url策略有五种,如下: # 1.将访问过的ur保存到数据库中 # 2.将访问过的ur保存到set(集合)中,只需要 方法,将访问过的ur通过hash函数映射到某一位 # 5. bloomfilter方法对 bitmap进行改进,多重hash函数降低冲突 三、看代码,边学边敲边记url策略 1.将访问过的ur保存到数据库中 (字节), 计算式: 这样一比较,MD5的空间节省率为:(100-16)/100 = 84%(相比于方法二) (Scrapy框架url就是采用的类似方法) ''' # 维基百科看MD5算法 '''

    2.2K30发布于 2020-02-12
  • 来自专栏hotarugaliの技术分享

    排序

    简介   排序是将待排序序列分到有限数量的中,然后对每一个分别进行排序排序的前提假设为被排序序列的关键字数值符合均匀分布,此时排序的平均时间复杂度为 ,最坏时间复杂度为 其中 为的数量。当数量 时,此时排序的复杂度为线性复杂度 。   排序是非原址的,其稳定性取决于内层排序的稳定性。一般采用稳定的插入排序作为内层排序算法,此时排序是稳定的。 2. 思想 排序的主要思想是对待排序序列的关键字数值进行分块,每一块对应一个,然后对每个使用插入排序(或其他排序算法)进行排序,最后将所有中的元素串联起来即得到有序序列。 3. +1] = bkt[j]; j--; } bkt[j+1] = key; } } // 排序

    41130编辑于 2022-03-01
  • 来自专栏seth-shi的专栏

    排序算法-排序

    排序很适用于有 0~100 个数, 然后打乱顺序, 重新分配. 不过如果给定的数据范围差距很大, 排序的算法效率变低. 步骤 申请 n 个,根据需求 遍历一个给定的数组,找到最大值和最小值 遍历数组,假设遍历的值为num,按照公式floor((num - min) / n)即可得知放入哪个 如果中已存在元素,拉出一个链表 ,并且按照从小到大的顺序 重复 3,4 直至把所有元素装入中 遍历所有中的链表, 直接把每一个元素载入数组,排序即可完成 package main import ( "fmt" " math" ) func main() { data := []int{111, 9, 2, 4, 9, 3, 3, 5, 7, 1, 8, 2, 11, 22, 99, 192} bucketChunk := (max - min + 1) / buckets bucketLinks := make([]*LinkList, buckets) // 把所有数字放入中并且排序

    33010编辑于 2023-12-18
  • 来自专栏JavaEE

    排序算法 --- 排序

    一、排序思想 之前将的计数排序,有些局限性,比如数列最大值和最小值差距不能太大,而且只能排整数。排序就对这些局限性做了弥补。排序的思想就是每个代表一个区间范围,里面可以装若干个元素。 然后对这些内部进行排序,最后遍历这些,那么数列就是有序的了。 排序 然后开始遍历原始数列,把元素放入对应的中,如下: ? 排序 对每个内部的元素进行排序,如下: ? 排序 最后遍历所有的,输出的元素就是有序的了。 排序的缺点:如果数据分布不均衡,比如最大值1000,最小值0.5,剩余元素都是零点几的,也就是说最后一个放最大元素,其他元素都在第一个,这样性能就会下降,并且创建了很多空桶,浪费空间。 (num).add(arr[i]); } // 对每个内部进行排序 for (int i = 0; i < buckets.size(); i++) {

    51951发布于 2020-10-10
  • 来自专栏C++信息学奥赛

    杨校老师课堂之不去排序算法——计数应用专项题单

    排序题目描述输入5个不大于10的正整数,请按照从小到大的顺序输出这5个数。输入描述输入5个正整数。输出描述从小到大顺序输出5个数。中间用空格隔开。 俄罗斯套娃(不去)题目描述本来有一个完整的俄罗斯套娃,现在被小可都拆开了,很是凌乱,现在需要你帮我按套娃的尺寸的给我(每个尺寸大小可能重复),帮我一起把套娃组装起来! 样例4 4 1 2 3输4 3 2 1#include<iostream> // 包含输入输出流头文件using namespace std; // 使用标准命名空间int main(){ // { // 根据a[i]的值循环 cout << i << " "; // 输出i,并输出一个空格 } } return 0; // 主函数返回0}3.

    19200编辑于 2025-07-03
  • 算法】有序和无序,C语言版

    有序 时间复杂度:O(N) 思路: 1.双指针方法,一个用来遍历整体数组,另一个用来维护后的空间。 2.如果两个指向的数大小是不同的,则维护空间++,并且把新的数加进去。 int main() { int arr[] = { 1,2,3,3,5,5,8,8 }; int num = 0; for (int i = 1; i < sizeof(arr) / sizeof = arr[i]) { num++; arr[num] = arr[i];//注意两句的逻辑顺序 } } return 0; } 无序 时间复杂度:O(N^2) 思路: 1.和有序思路相似,建立双指针。 2.不同的是判断是否重复,每一次判断都需要在已经的范围里循环一遍。

    13710编辑于 2025-12-16
领券