c语言快速排序的思想
时间: 2023-10-17 17:32:19 浏览: 86
快速排序是一种基于分治法的排序算法,它的主要思想是将待排序的数据分解成若干个小问题求解,然后将这些小问题的解合并成整个问题的解。算法的步骤如下:
1. 选择一个基准数,可以是待排序序列中的任意一个数。
2. 将序列中小于基准数的元素移动到基准数的左边,大于基准数的元素移动到基准数的右边。
3. 对基准数左右两部分分别重复步骤2,直到每个子序列只剩下一个元素或为空。
4. 最后将所有子序列的结果合并,即可得到有序序列。
具体的实现代码如下所示:
```
void quickSort(int* arr, int start, int end) {
if (start >= end) return;
int i = start;
int j = end;
int pivot = arr[start]; // 选择第一个元素作为基准数
while (i < j) {
while (i < j && arr[j >= pivot) j--; // 从右往左找第一个小于基准数的元素
if (i < j) arr[i++] = arr[j]; // 将小于基准数的元素移动到基准数的左边
while (i < j && arr[i <= pivot) i++; // 从左往右找第一个大于基准数的元素
if (i < j) arr[j-- = arr[i]; // 将大于基准数的元素移动到基准数的右边
}
arr[i = pivot; // 将基准数放到最终位置
quickSort(arr, start, i - 1); // 递归处理左半部分
quickSort(arr, i + 1, end); // 递归处理右半部分
}
int main() {
int arr[] = {6, 5, 4, 3, 2, 1};
int size = sizeof(arr) / sizeof(arr<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C语言实现快速排序算法](https://download.csdn.net/download/weixin_38706951/14866988)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [快速排序算法思想及示例(C语言实现)](https://blog.csdn.net/u013028621/article/details/118060305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文