admin 管理员组

文章数量: 1184232


2024年1月27日发(作者:免费后台管理模板)

快速排序法c语言代码

快速排序法是一种非常高效的排序算法,它能够在最好情况下实现O(NlogN)的时间复杂度。下面是快速排序法的C语言代码实现:

```

#include

void quicksort(int arr[], int left, int right) {

int i, j, pivot, temp;

if (left < right) {

pivot = left;

i = left;

j = right;

while (i < j) {

while (arr[i] <= arr[pivot] && i < right)

i++;

while (arr[j] > arr[pivot])

j--;

if (i < j) {

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

- 1 -

temp = arr[pivot];

arr[pivot] = arr[j];

arr[j] = temp;

quicksort(arr, left, j - 1);

quicksort(arr, j + 1, right);

}

}

int main() {

int arr[] = {10, 7, 8, 9, 1, 5};

int n = sizeof(arr) / sizeof(arr[0]);

quicksort(arr, 0, n - 1);

printf('Sorted array: ');

for (int i = 0; i < n; i++)

printf('%d ', arr[i]);

return 0;

}

```

在main函数中,我们首先定义一个整型数组arr,并初始化它。然后通过计算数组的长度n,调用quicksort函数进行排序。quicksort函数接收三个参数:待排序数组arr,左边界left和右边界right。在函数内部,首先判断left是否小于right,如果是,则进行排序操作。我们选择数组的第一个元素作为枢轴(pivot),并定 - 2 -

义两个指针i和j分别从左往右和从右往左扫描数组。当arr[i]大于枢轴值,或者arr[j]小于等于枢轴值时,交换arr[i]和arr[j]的值。这样扫描完成后,枢轴值已经被放置在正确的位置上。我们接着递归对枢轴值左边的子数组和右边的子数组进行排序,最后得到完整的有序数组。

在上面的代码中,我们使用了递归算法实现快速排序,这样可以简化代码逻辑。但是需要注意的是,当递归层数过多时,会导致栈溢出,因此在实际应用中需要根据情况选择合适的排序算法。

- 3 -


本文标签: 排序 数组 枢轴 代码 函数