gpt4 book ai didi

c - Big O 如何跟踪快速排序算法中的迭代? C

转载 作者:行者123 更新时间:2023-11-30 19:37:23 25 4
gpt4 key购买 nike

我有以下 C 代码快速排序算法。

#include <stdio.h>
#include <stdbool.h>

int list[] = {8, 1, 3, 4, 2, 10, 4, 6};
//int list[] = {2, 1, 10, 4, 5, 11, 12, 6};
//int list[] = {35, 33, 42, 10, 14, 19, 27, 44, 26, 31};
int main(int argc, char **argv)
{

printf("Unsorted list is: ");
printArray(list);
quickSort(0, 7);
printf("Sorted list is: ");
printArray(list);

return 0;
}

int partition(int left, int right, int pivot){

int leftPointer = left -1;
int rightPointer = right;
while(true){

while(list[++leftPointer] < pivot){
//do nothing
// printf("proses index kiri %d\n", leftPointer);

}

while(rightPointer > 0 && list[--rightPointer] > pivot){
//do nothing
// printf("proses index kanan %d\n", rightPointer);
}

if(leftPointer >= rightPointer){
break;
}else{
printf("item swapped :%d,%d\n",
list[leftPointer],list[rightPointer]);

swap(leftPointer, rightPointer);
// return;
// left++;
// right--;
}

}
printf("pivot swapped :%d,%d\n", list[leftPointer],list[right]);
swap(leftPointer, right);
printf("pivot index %d\n", leftPointer);
return leftPointer;

}

void quickSort(int left, int right){
if(right - left <= 0){
return;
}else{
int pivot = list[right];
int pIndex = partition(left, right, pivot);
quickSort(left, pIndex-1);
quickSort(pIndex+1, right);
// printf("aman lanjut proses");
}
}

void printArray(int list[]){
int i;
for(i = 0; i < 8; i++){
printf(" %d ", list[i]);
}
printf("\n\n");
}

void swap(int left, int right){
//variabel sementara untuk menampung i
int temporary = list[left];

//tukar posisi, sehingga yg kecil di kiri, yg besar di kanan.
list[left] = list[right];
list[right] = temporary;
}

我应该在哪里放置“printf”来指示迭代步骤(跟踪)?

因为目标是我想检查/计算当前数据的 Big O 表示法的复杂性如何?满足最佳、平均或最坏情况。

最佳答案

Big O 说每一次“操作”都有相同的成本。即使它就像递增指针一样微不足道。因此,您需要设置一个全局计数器,然后在每个内部循环中递增它。所以两个 while leftpointer 和 while rightpointer 循环,再加上 while true 循环。每通过一次增量。\

关于c - Big O 如何跟踪快速排序算法中的迭代? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39892755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com