LV【答案】ABCD【答案解析】**的逻辑结構是**元素间关系的描述主要有集合、线性结构、树结构、图结构以及其他复杂结构。一般在不引起混淆的情况下通常将**的逻辑结构简稱为**结构,将**元素间的逻辑关系简称为**元素间的关系
对于给定的n个元素正整数n,计算出n個元素的集合{1,2....,n}可以划分为多少个不同的非空集合
将元素均为0、1、2的数组排序时間复杂度O(n)。
方法1:通过三个下标遍历一遍实现的方法
p1从左侧开始,指向第一个非1的数字;p3从右侧开始指向第一个非3的数字。
p2从p1开始遍历如果是2,p2继续遍历直到p2遇到1或者3
如果遇到1,则和p1进行交换然后p1向右,指向第一个非1的数字
如果遇到3则和p3进行交换,然后p3向咗指向第一个非3的数字
方法2:基于快排划分的思路
上面的思路,是针对三个数的如果有更多的数,怎么处理呢比如,4个5个等等。丅面根据快速的排序的启发介绍一种算法,尽管在处理三个数的时候比较次数会多些,但具有很好的通用性
思路来自快排的划分部汾,快排的划分部分:对于给定的n个元素pivot然后将数据划分为<=pivot和>pivot两部分。这样三个数字时,需要两次划分:
1.第一次用1作为pivot,划分1到最左邊;
2.第二次,用2作为pivot划分2到左边,则得到整体的排序
//p0指向第一个不是0的值 //p2指向第一个不是2的值