文章
77
粉丝
9
获赞
2
访问
7.6k
1)将数组进行选择快速排序,初始化count变量为1;然后从头遍历数组,当遍历到数组的第一个1元素时,count++ ,后续匹配到count,继续对count++,直到遍历完最后返回count值,即为最小正整数
2)
int partition(int A[], int L, int R) {
int mid = A[L];
while (L < R) {
while (A[R]>=mid && L<R) R--;
A[L] = A[R];
while (A[L]<=mid && L<R) L++;
A[R] = A[L];
}
A[L] = mid;
return L;
}
void Qsort(int A[], int L, int R) {
if (R<=L) return;
int M = partition(A, L, R);
Qsort(A, L, M-1);
Qsort(A, M+1, R);
}
int getMin(int A[], int len) {
int count = 1;
Qsort(A, 0, len-1);
if (A[len-1]<=0) return 1;
for (int i=0; i<len; i++) {
if (A[i] == count) count++;
}
return count;
}
3)时间复杂度O(nlogn),空间复杂度O(logn)
登录后发布评论
暂无评论,来抢沙发