随笔 - 165,  文章 - 0,  评论 - 4,  阅读 - 18023
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#include <algorithm>
using namespace::std;

class Solution {
public:
	//直接插入排序(插到该数左边所有数字中,第一个比他小的数的右边)
	void insertsort(vector<int>& num) {
		for (int i = 1; i < num.size(); i++) {
			int tmp = num[i], j = i - 1;			//tmp为监视哨
			while (j>=0&&tmp < num[j]) {			//j要防止越界
				num[j + 1] = num[j];			//比tmp大的数都向右挪一个位置
				j--;
			}
			num[j + 1] = tmp;			//tmp最后放在比它小的数的右边
		}
	}

	//冒泡排序(小数上浮)
	void bubblesort(vector<int>& num) {
		int i, j;
		for (i = 0; i < num.size()-1; i++) {			//num[i]存放上浮的最小数
			for (j = num.size() - 1; j > i; j--) {			//j>i,保证每一轮最后比较的是num[i]和num[i+1]
				if (num[j] < num[j - 1]) swap(num[j], num[j - 1]); 
			}
		}
	}

	//快速排序
	int traversal(vector<int>& num, int l, int r) {
		int tmp = num[l];
		int i = l, j = r;
		while (i < j) {
			while (num[j] > tmp && i < j) j--;
			if (num[j] < tmp && i < j) {
				num[i] = num[j];
			}
			while (num[i] < tmp && i < j)i++;
			if (num[i] > tmp && i < j) {
				num[j] = num[i];
			}
			num[i] = tmp;
		}
		return i;
	}
	void quicksort(vector<int>& num, int l, int r) {
		if (l < r) {
			int mid = traversal(num, l, r);
			quicksort(num, l, mid - 1);
			quicksort(num, mid + 1, r);
		}
	}

	//选择排序(每次选出最小的数放前面)
	void selectsort(vector<int>& num) {
		for (int i = 0; i < num.size() - 1; i++) {
			int min = i;
			for (int j = i + 1; j < num.size(); j++) {
				if (num[j] < num[min]) {
					min = j;
				}
			}
			swap(num[i], num[min]);
		}
	}
};

int main() {
	vector<int> num{ 5, 8, 9, 6, 2 };
	Solution sort;
	//sort.insertsort(num);
	//sort.bubblesort(num);
	//sort.selectsort(num);
	sort.quicksort(num, 0, num.size()-1);
	for (auto n : num) {
		cout << n << ' ';  
	}
	cout << endl;  
}


快速排序最好最通用

posted on   孜孜不倦fly  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示