
acm知识点
芛小飗
只写练习题的脑瓜
展开
-
插入排序 和 选择排序
插入排序 和 选择排序前段时间码了冒泡排序和选择排序,今天来捋一捋插入排序和选择排序。1.区别插入排序:通过插入的方法,对无序序列进行排序。昂前段时间因为理解不到位,写着写着愣是把插入排序写成了选择排序…-||-研究了一波在我的肤浅想法里,其实,插入排序和选择排序的差别是:首先,插入排序选定当前排序位置后,是和前面的有序列(有序列就是前面已经排好序的)进行比较排序;而选择排序呢是当前排序位置和后面的无序列(就是剩下的还没有排序的)进行排序比较的。其次,插入排序是前面有序列两两进行位置交换,而选择原创 2021-07-14 16:25:39 · 5065 阅读 · 0 评论 -
DFS深度优先搜索
DFS特点:随机选路,不撞南墙不回头。策略定义:从起点出发,走过的节点都做标记,只要发现没走过的节点就随意挑选一个往前,如果走不了就回退到上一节点,重新选择前进。特点:只有一条线路。存图方法:1.邻接矩阵用一个二维数组存放,g [i] [j] 表示 点 i 和 j 的情况(是否有边 ,长度大小等)特点:适合节点少的, n个节点,复杂度为o (n ^ 2)2.邻接表每个节点V对应一个一维动态数组 vecter ,存放从v 连出去的边,边的信息 (有时包括另一点的信息)特点:适合节点多的,属原创 2021-07-12 11:35:58 · 206 阅读 · 0 评论 -
选择排序 c语言
选择排序1. 定义选择排序(升序)想法:两重循环,第一个循环中,每一次循环将当前元素标记为最小值,通过第二个循环遍历未排序的剩余元素,如果有小于当前最小值,则进行交换。即每一交换都能将剩余的最小值排到前排相应位置,循环n-1次排好。2. c代码#include<stdio.h>void xuanze(int *,int);int main(){ int a[100];//定义一个足够大的数组 int len,i; scanf("%d",&len);//输入的数目原创 2021-07-09 23:55:24 · 376 阅读 · 4 评论 -
冒泡排序ooo
冒泡排序1. 定义冒泡排序是一种稳定排序。平均时间复杂度为O(n ^2),最好为O(n),最坏为O(n^2)。每次排序(升序,n个元素)时,比较当前元素和后一个元素的大小,然后判断是否进行交换,,每轮结束后都能把最大的数移到队尾。循环进行n-1次直至排序完全排好,即为冒泡排序。又因为,经过i次排序,已经排好了i个较大的元素,所以在剩下的排序中,每次排序都只进行n-i-1次。2. c代码#include<stdio.h>void maopao(int *,int);int mai原创 2021-07-09 23:01:59 · 134 阅读 · 0 评论