栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

排序算法 面试必备

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

排序算法 面试必备

快速递归 挖坑法
void quick_sort(vector& nums, int l, int r)
{
	if (l + 1 > r)
		return ;
	int first = l, last = r - 1, key = nums[first];
	while (first < last) {
		while (first < last && key <= nums[last]) {
			last--;
		}
		nums[first] = nums[last];
		while (first < last && key >= nums[first]) {
			first++;
		}
		nums[last] = nums[first];
	}
	nums[first] = key;
	quick_sort(nums, l, first);
	quick_sort(nums, first+1, r);
}
归并排序:
void merge_sort(vector&nums, int l, int r, vector&temp){
	if (l+1 >=r)
		return;
	int m = (l + r) << 1;
	merge_sort(nums, l, m, temp);
	merge_sort(nums, m, r, temp);
	int p = l, q = m,i = l;
	while (p < m|| q < r) {
		if (q >= r || (p < m && nums[p] <= nums[q])) {
			temp[i++] = nums[p++];
		}
		else {
			temp[i++] = nums[q++];
		}
	}
	for (i = 1; i < r; i++) {
		nums[i] = temp[i];
	}
}

插入排序:
void insertion_sort(vector&nums, int n) {
	for (int i = 0; i < n; i++) {
		for (int j = i; j > 0; j--) {
			if (nums[j-1] > nums[j]) {
				swap(nums[j - 1], nums[j]);
			}
		}
	}
}
选择排序:
void select_sort(vector&nums, int n)
{
	int mid;
	for (int i = 0; i < n - 1; i++) {
		mid = i;
		for (int j = i + 1; j < n; j++) {
			if (nums[j] < nums[mid]) {
				mid = j;
			}
		}
		swap(nums[i],nums[mid]);
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917110.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号