首页 > 其他分享 >排序合集模板

排序合集模板

时间:2024-03-23 09:22:34浏览次数:26  
标签:mergeSort int mid bubbleSort swap ind 排序 合集 模板

#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int a[N];
int t[N];
int n;
void bubbleSort(int a[],int n){
    //冒泡排序 : 
    //时间复杂度 : O(n^2) 
    //是否稳定 : 是 
	for(int i=n;i>1;i--){
		for(int j=1;j<i;j++){
			if(a[j]>a[j+1]){
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	exit(0); 
}
void insertSort(int a[],int n){
    //直接插入排序 : 
    //时间复杂度 : O(n^2) 
    //是否稳定  : 是 
	for(int i=2;i<=n;i++){
		for(int j=i;j>1;j--){
			if(a[j]<a[j-1]){
				swap(a[j],a[j-1]);
			}
			else{
				break;
			}
		}
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	exit(0); 
}
void selectSort(int a[],int n){
    //选择排序 : 
    //时间复杂度 : O(n^2) 
    //是否稳定  : 否 
	for(int i=1;i<=n;i++){
		int ind=i;
		for(int j=i+1;j<=n;j++){
			if(a[ind]>a[j]){
				ind=j;
			}
		}
		swap(a[i],a[ind]);
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	exit(0); 
}
void quickSort(int L,int R){
	//快速排序 : 
    //时间复杂度 : O(nlogn)---O(n^2)
    //是否稳定  : 否 
    //递推边界 
    if(L>=R){
    	return ;
	}
	//分 
	int i=L;
	int j=R;
	int k=L;
	while(i<j){
		while(a[j]>=a[k]&&i<j){
			j--;
		}
		while(a[i]<=a[k]&&i<j){
			i++;
		}
		swap(a[i],a[j]);
	}
	swap(a[k],a[i]);
	//治 
	quickSort(L,i-1);
	quickSort(i+1,R);
	return ; 
}
void mergeSort(int L,int R){
	//归并排序 : 
    //时间复杂度 : O(nlogn)
    //是否稳定  : 是
    //递推边界 
    if(L>=R){
    	return;
	} 
	//分 
	int mid=(L+R)/2;
	mergeSort(L,mid);
	mergeSort(mid+1,R);
	int i=L;
	int j=mid+1;
	int ind=0;
	int ans=0; 
	while(i<=mid&&j<=R){
		if(a[i]<a[j]){
			t[++ind]=a[i++];
		}
		else{
			t[++ind]=a[j++];
			//ans+=mid-i+1;
			//逆序对 
		}
	}
	//治 
	while(i<=mid){
		t[++ind]=a[i++];
	}
	while(j<=R){
		t[++ind]=a[j++];
	}
	for(int i=1;i<=ind;i++){
		a[L+i-1]=t[i]; 
	} 
	return ; 
}
void bucketSort(int a[],int n){
	//桶排序 :
	//时间复杂度 :O(n)
	//是否稳定 :是
	for(int i=1;i<=n;i++){
		t[a[i]]++;
	}
	for(int i=1;i<=n;i++){
		while(t[a[i]]!=0){
			cout<<i<<" ";
			t[a[i]]--;
		}
	} 
	exit(0);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	//bubbleSort(a,n);
	//insertSort(a,n);
	//selectSort(a,n);
	//quickSort(1,n);
	//mergeSort(1,n);
	//bucketSort(a,n);
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
} 

标签:mergeSort,int,mid,bubbleSort,swap,ind,排序,合集,模板
From: https://www.cnblogs.com/BadBadBad/p/18090783/PaiXu

相关文章

  • 【专题】展望人工智能银行:当银行遇到AI报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32210在2016年,AlphaGo机器人打败了18届世界棋王李世石,成为了世界棋坛上最伟大的人物。阅读原文,获取专题报告全文,解锁154份文末人工智能银行相关报告。围棋是一种非常复杂的棋类,它要求有很强的直觉,想像力和策略性的思考,而这一切在很长一段时间里都......
  • 【专题】2024抖音春日热点报告-餐饮篇报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35422原文出处:拓端数据部落公众号2023年,中国经济表现稳健,零售消费稳定增长,尤其国内旅游市场迅速回暖,人们出行频率回升,酒店、餐饮和旅游服务的消费需求稳步攀升,为相关行业复苏提供了强大动力。据文化和旅游部数据显示,全年国内旅游总人次和收入均实......
  • 常见算法模板
    常见算法快速排序#include<iostream>#include<algorithm>//快速排序voidqsort(inta[],intleft,intright){if(left>=right)return;inti=left-1,j=right+1;intx=a[left+right>>1];while(i<j){doi++;while(a[i]<x);doj--;while(a[j]>......
  • 【LeetCode-153.寻找旋转排序数组的最小值】
    已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums=[0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0],a[1],a[2],...,a[n-1......
  • 快速排序的原理及其多种方法的实现和优化
    ✨✨✨学习的道路很枯燥,希望我们能并肩走下来!文章目录前言一、快速排序介绍二、快速排序实现的方法(升序)1.hoare版本:2.挖坑法3.前后指针法  三、快速排序的优化1.关于所排序的数据有序或接近有序的问题1.1随机取key方法1.2三数取中法2.关于递归深度过深导......
  • [C++提高编程](一):模板----函数模板
    目录函数模板作用函数模板的语法注意事项普通函数与函数模板的区别普通函数与函数模板的调用规则模板的局限性案例--通用数组选择排序从大到小模板是C++中泛型编程的基础,一个模板就是一个创建类或函数的蓝图或者公式。函数模板作用建立一个通用函数,其函数返回值类型......
  • 十大经典排序之计数排序
    文章目录概要整体架构流程代码实现小结概要计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。整体架构流程(1)找出待排序的数组中最大和最小的元素(2)统计数组中每......
  • LRC软件、Adobe Lightroom Classic最新版破解安装下载合集教程
    AdobeLightroomClassic(简称LR)是AdobeCreativeCloud大家庭中的一款专业的图片管理和编辑工具,用于专业摄影师、摄影爱好者以及所有不断优化数码影像的人等。其目标是以丰富的功能提供高效、一致的体验,帮助用户汇聚、组织、管理、编辑和分享数码图片。AdobeLightroomClassi......
  • Java - 冒泡排序
      //冒泡排序publicclassBubbleSort{ publicstaticvoidmain(String[]args){ //定义一个整型的数组 int[]array={64,34,25,12,22,11,90} bubbleSort(array); for(inti:array){ System.out.println(i+""); } } publicstaticvoidbubbl......
  • SpringBoot3.x与SpringDoc OpenApi之Swagger接口排序
    直接使用Swagger之后,发现所有的Controller接口菜单都是无序的先看一下效果 就是利用了一下SpringDoc提供的接口做了一下自定义排序1.在Controller上加上注解@Tag(name="MenuController",description="1-菜单管理")这里需要注意description属性,在下面的代码里......