一步一步复习数据结构和算法基础-快速排序
2012-07-24 18:43
381 查看
#include <stdio.h> #include <stdlib.h> int QuickPass(int *array,int low,int high) { //pivotkey记录枢轴的关键字 //low 和 high 是指示指针 //经过一次排序之后枢轴左边的元素小于枢轴,枢轴右边的元素大于枢轴 int pivotkey; *array = *(array+low); pivotkey = *(array+low); while(low < high) //如果满足条件 { while(low < high && *(array+high) >= pivotkey)--high; *(array+low) = *(array+high); while(low<high && *(array+low)<=pivotkey)++low; *(array+high)=*(array+low); } *(array+low)=*array; //枢轴元素归位 return low; } void QSort(int *array,int low,int high) { int pivotloc; if(low < high) //low指针低于high指针 { pivotloc = QuickPass(array,low,high); //获取枢轴位置 QSort(array,low,pivotloc-1); //左半边递归 QSort(array,pivotloc+1,high); //右半边递归 } } void QuickSort(int *array,int length) { QSort(array,1,length); } int main() { int *array,length,i; scanf("%d",&length); array = (int*)malloc(sizeof(int)*(length+1)); for(i=1;i<=length;i++) scanf("%d",array+i); QuickSort(array,length); for(i=1;i<=length;i++) printf("%d ",*(array+i)); return 0; }
相关文章推荐
- 一步一步复习数据结构和算法基础-层次建立层次遍历二叉树
- 一步一步复习数据结构和算法基础-深度优先搜索
- 一步一步复习数据结构和算法基础-LSD基数排序
- 一步一步复习数据结构和算法基础-链式队列
- 一步一步复习数据结构和算法基础-Floyd算法
- 一步一步复习数据结构和算法基础-顺序串
- 一步一步复习数据结构和算法基础-广度优先搜索
- 一步一步复习数据结构和算法基础-冒泡排序
- 一步一步复习数据结构和算法基础--kruskal算法
- 一步一步复习数据结构和算法基础-索引顺序表查找
- 一步一步复习数据结构和算法基础-插入排序(2)
- 一步一步复习数据结构和算法基础-前序线索二叉树
- 一步一步复习数据结构和算法基础-顺序查找+二分查找
- 一步一步复习数据结构和算法基础-链表(3)
- 一步一步复习数据结构和算法基础-斐波那契查找法
- 一步一步复习数据结构和算法基础-链表(2)
- 一步一步复习数据结构和算法基础-栈和队列(2)
- 一步一步复习数据结构和算法基础-二叉排序树
- 一步一步复习数据结构和算法基础-链表(1)
- 一步一步复习数据结构和算法基础-二叉树基本操作