快速排序

来源:互联网 发布:贸易条件指数 优化 编辑:程序博客网 时间:2024/05/16 08:34

题目:基于数组的快速排序

思路:

(1)选择一个枢纽结点,之后将数组中的元素进行划分,使所有小于枢纽结点的数放到前面,大于枢纽结点的数放到后面

(2)递归的对前面一部分和后面一部分再进行划分,直到所有结点都有序为止

代码:

#include <iostream>using namespace std;//用待排数组的第一个元素为枢纽结点进行划分int Patition(int* arr,int start,int end){int pivotkey = arr[start];while (start < end){while (start < end && arr[end] >= pivotkey){end--;}arr[start] = arr[end];while (start < end && arr[start] <= pivotkey){start++;}arr[end] = arr[start];}arr[start] = pivotkey;return start;}void QuickSort(int* arr,int start,int end){int pivotloc;if (start < end){pivotloc = Patition(arr,start,end);QuickSort(arr,start,pivotloc-1);QuickSort(arr,pivotloc+1,end);}}int main(){int nlen;cout<<"input array elem number:";cin>>nlen;int* arr = new int[nlen];cout<<"input elem:"<<endl;for (int i = 0; i < nlen; ++i){cin>>arr[i];}QuickSort(arr,0,nlen-1);delete[] arr;arr = NULL;}





0 0
原创粉丝点击