// 冒泡排序voidBubbleSort(vector<int>&nums){int i, j;int n = nums.size();for(int i =0; i < n -1; i++){for(int j =0; j < n - i -1; j++){if(nums[j]> nums[j +1]){int temp = nums[j];
nums[j]= nums[j +1];
nums[j +1]= temp;}}}}
冒泡排序的改进
// 冒泡排序的改进voidBubbleSort1(vector<int>&nums){int temp;int flag =1;int j = nums.size()-1;while(flag){
flag =0;for(int i =1; i <= j; i++){if(nums[i -1]> nums[i]){
temp = nums[i];
nums[i]= nums[i -1];
nums[i -1]= temp;
flag =1;}}
j--;}}
快速排序
// 快速排序voidQuickSort(vector<int>&nums,int start,int end){if(start >= end){return;}int left = start;int right = end;int temp = nums[left];while(left < right){while(left < right && nums[right]> temp)
right--;
nums[left]= nums[right];while(left < right && nums[left]< temp)
left++;
nums[right]= nums[left];}
nums[left]= temp;// 中心点位置QuickSort(nums, start, left -1);QuickSort(nums, left +1, end);}
选择排序
简单选择排序
// 选择排序voidSelectSort(vector<int>&nums){int min;int temp;for(int i =0; i < nums.size()-1; i++){
min = i;for(int j = i +1; j < nums.size(); j++){if(nums[min]> nums[j])
min = j;}
temp = nums[i];
nums[i]= nums[min];
nums[min]= temp;}}
// 基数排序voidjishusort(vector<int>&nums,int d){int p =1;int n = nums.size();
vector<vector<int>>buckets(10,vector<int>(n));
vector<int>order(10);while(p < d){for(int num : nums){int index = num / p %10;
buckets[index][order[index]]= num;
order[index]++;}int k =0;for(int i =0; i <10; i++){if(order[i]==0)continue;for(int j =0; j < order[i]; j++){
nums[k]= buckets[i][j];
k++;}
order[i]=0;}
p *=10;}}