数据结构部分
排序算法 共有 冒泡、选择、插入、归并、快速排序、堆排序和不基于比较的排序
冒泡排序:比较相邻的两个元素、如果前数小就交换两数的位置,这样一组之后就可以得到数组中最小的数 然后继续进行这个操作,直到遍历完成。 这种方法的时间复杂度是O(N^2)。
选择排序:这个比较好说,就是依次遍历数组中最小的数,放到数组最前面。 这种方法的时间复杂度是O(N^2)。
插入排序:将数组的第一个数看作有序数组,之后依次将数组中其他数插入有序数组。 时间复杂度也是O(N^2) 。
归并排序 :主要方法是将数组分两半然后调用递归,然后写一个merge比较两半的数组然后排序,时间复杂度也是O(Nlog N) 。
快速排序:将最后一个数作为分界,在数组中建立大于区和小于区,然后递归。如果随机选择一个数最分解时间复杂度是O(Nlog N)。
堆排序: 先形成一个堆,然后依次去堆的顶元素放入数组。时间复杂度是O(Nlog N)。
堆排序灵活运用:一个基本有序的数组,每个数移动K位就可以有序。 先形成一个K位的桶 然后依次放入再取出。
不基于比较的排序:桶排序,准备个位数的桶,依次按照最高位进桶(不够的补齐),取出,然后按第二位进桶……
异或可以找出两个不同的的数。即数组中有奇数个的数。
提取数中最右侧的一个1 b=~a a&(b+1)
另外还看一一些linux的入门 大部分都是一些基本命令,这个课直接有文档感觉没有总结的必要了。
标签:数据结构,第一周,复杂度,堆排序,然后,Nlog,数组,排序,初始 From: https://www.cnblogs.com/yangyi1715/p/17208305.html