1:請使用函數模板,寫一個能夠針對所有數據類型的數據的快速排序函數 并多寫幾個數組做測試
代碼
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std;template <typename T>
void quick_sort(T* arr,int left,int right){if(left>=right)return;int i=left,j=right;T temp=arr[left];while(i<j){while(i<j && *(arr+j)>=temp)j--;*(arr+i)=*(arr+j);while(i<j && *(arr+i)<temp)i++;*(arr+j)=*(arr+i);}*(arr+i)=temp;//遞歸調用直到一個元素為有序quick_sort(arr,left,i);quick_sort(arr,i+1,right);}int main(int argc,const char** argv){cout<<"整數數組排序:";int arr[]={6,5,2,4,43,2,32,4,43,56,47};int len_arr=sizeof(arr)/sizeof(arr[0]);quick_sort(arr,0,len_arr-1);for(int i=0;i<len_arr;i++)cout<<arr[i]<<" ";cout<<endl;cout<<"字符數組排序:";char chr[]={'w','2','1','y','U','&','@'};int len_char=sizeof(chr)/sizeof(chr[0]);quick_sort(chr,0,len_char-1);for(int i=0;i<len_char;i++)cout<<chr[i]<<" ";cout<<endl;cout<<"字符串數組排序";string str[]={"hello","nihao","woshi","afygj"};int len_str=sizeof(str)/sizeof(str[0]);quick_sort(str,0,len_str-1);for(auto a:str)cout<<a<<" ";cout<<endl;cout<<"double數組排序:";double nums[] = {3.14, 1.59, 2.65, 0.89, 5.21, 4.76};int len_double = sizeof(nums) / sizeof(nums[0]);quick_sort<double>(nums, 0, len_double - 1);for (auto num : nums) {cout << num << " ";}cout << endl;return 0;
}
運行結果
