快速排序(C语言版)
来源:互联网 发布:linux vnc 安装 编辑:程序博客网 时间:2024/05/22 11:52
先说说快速排序的思想:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
下面是我用C语言实现的快速排序的源代码,参考的是严蔚敏的数据结构那本书,如果有什么不对的地方,请各位指出,谢谢。
#include <stdio.h>#include <stdlib.h>#include <assert.h>void quickSort(int array[], int size);void _quickSort(int array[], int low, int high);int findPivotIndex(int array[], int low, int high);void printArray(int *array, int size);int main(int argc, char const *argv[]){ int size = 0; scanf("%d", &size); assert(size > 0); int *array = (int *)calloc(size, sizeof(int)); int i = 0; for (i = 0; i < size; ++i) { scanf("%d", &array[i]); } quickSort(array, size); printArray(array, size); free(array); return 0;}void quickSort(int array[], int size){ assert(array != NULL && size > 0); _quickSort(array, 0, size - 1);}void _quickSort(int array[], int low, int high){ int pivotIndex = 0; if (low < high) { pivotIndex = findPivotIndex(array, low, high); _quickSort(array, low, pivotIndex - 1); _quickSort(array, pivotIndex + 1, high); }}int findPivotIndex(int array[], int low, int high){ int pivot = array[low]; while (low < high) { while (low < high && array[high] >= pivot) { --high; } array[low] = array[high]; while (low < high && array[low] <= pivot) { ++low; } array[high] = array[low]; } array[low] = pivot; return low;}void printArray(int *array, int size){ assert(array != NULL && size > 0); int i = 0; for (i = 0; i < size; ++i) { printf("%d ", array[i]); } printf("\n");}
其他八种排序算法的博客:
常见的9种内部排序(C语言实现)
0 0
- 快速排序(c语言版)
- 快速排序(C语言版)
- 快速排序C语言版
- 快速排序C语言版
- 快速排序C语言版
- 快速排序 C语言版
- 快速排序Qsort--C语言版
- 快速排序(QuickSort)C语言版
- 快速排序-C语言版
- 【排序】 快速排序代码-C语言版
- 数据结构与算法(C语言版)__快速排序
- 插入排序(c语言版)
- 插入排序(c语言版)
- 希尔排序(C语言版)
- 冒泡排序(C语言版)
- 冒泡排序(C语言版)
- 归并排序(C语言版)
- 归并排序(C语言版)
- mac 运行Yii代码生成器出错
- 如何获取最近的餐厅们
- sles11之nis服务器配置
- 用于对象识别的最好的多级结构是什么?(What is the Best Multi-Stage Architecture for Object Recognition)
- 5种服务器网络编程模型讲解
- 快速排序(C语言版)
- MySQL存储过程使用
- cpp-tests EffectsTest一些3D特效
- idea类似eclipse鼠标提示java api信息
- Android开发流程
- ASP.NET—015:ASP.NET中无刷新页面实现
- C++的类型萃取技术
- QT5-简单光源
- 一站式学习Wireshark