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 -
版权声明:本文标题:快速排序法c语言代码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1706344199a505607.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论