快速排序算法_C++

来源:互联网 发布:购买已备案域名可靠吗 编辑:程序博客网 时间:2024/05/23 15:41

    快速排序使用分治的方法,把数列按基准为界,分为左小右大两个子数列。然后按递归的思路,对两个子数列再进行快速排序,最终把整个数列有序排列。


#include <iostream>using namespace std;template<class T>void exchange(T arr[], int i, int j){T temp = arr[i];arr[i] = arr[j];arr[j] = temp;};template<class T>void quick_sort(T arr[], int left, int right){if (left >= right){return;}int i = left, j = right;T key = arr[left];while(i < j){while(i < j && arr[j] >= key)j--;while(i < j && arr[i] <= key)i++;if (i < j){exchange(arr, i, j);}}exchange(arr, left, i);quick_sort(arr, left, i - 1);quick_sort(arr, j + 1, right);}void main(){int arr[11] = {56,123,75,8,23,56, 96,12,34,3,45};quick_sort(arr,0,10);for(int i = 0;i < 10;i++)cout<<arr[i]<<" ";cout<<endl;double arr1[4] = {3.14, 8.7, 1.2, 3.5};quick_sort(arr1,0,3);for(int i = 0;i < 3;i++)cout<<arr1[i]<<" ";}


0 0