首页 > 编程语言 >c++实现排序算法

c++实现排序算法

时间:2023-11-04 23:12:30浏览次数:35  
标签:arr include int namespace c++ ++ 算法 排序

排序算法

选择排序

 #include <iostream>
#include <cmath>
using namespace std;     
int main()
{
	int n,i,j,a[2000];
	bool t;
	cin >>n;
	for (i=1;i<=n;i++)
		cin >>a[i];       
	for (i=1;i<n;i++)        
		for (j=i+1;j<=n;j++)
			if (a[i]>a[j])        
				swap(a[i],a[j]);     
 
	for (i=1;i<=n;i++)
		cout <<a[i] <<" ";        
 
	return 0;       
}

冒泡排序

#include<iostream>
using namespace std;
int main() {
	
	int i;
	int arr[8] = { 12,23,8,15,33,24,77,55};//初始化数组
	for (int i = 0; i < 7;i++) {//一共循环10次

		for (int j = 0; j < 7-i; j++) {//执行的次数依次递减
			if (arr[j]>arr[j + 1]) {
				int temp = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = temp;//交换值
			}
		}
	}
		
		
	
	for (int j = 0; j < 8; j++)//打印数组
	{
		cout << arr[j] <<" ";
	}
	system("pause");
	return 0;
}

插入排序

#include<iostream>
using namespace std;
int main() {
	
	int i;
	int arr[10] ;//初始化数组
	
	for (i = 0; i < 8; i++)
	{
		cin >> arr[i];//输入10要排序的数
	}

	for (int i = 1; i < 8;i++) {//10个数循环9次

		for (int j = i; j >0; j--) {//从第二个数开始与第一个数比较,小的插入到前面
			if (arr[j-1]>arr[j]) {
				int temp = arr[j-1];
				arr[j-1] = arr[j];
				arr[j] = temp;//插到前面来(交换值)
			}
		}
	}
		
		
	
	for (int j = 0; j < 8; j++)//打印数组
	{
		cout << arr[j] << " ";
	}
	return 0;
}

快速排序

#include<iostream>
using namespace std;
void quickSort(int a[], int, int);//原型声明
int main()
{
	int array[] = { 12,23,8,15,33,24,77,55},k;
	int len = sizeof(array) / sizeof(int);//数组长度
//cout << len << endl;
	for ( k = 0; k<len; k++)
		cout << array[k] << " ";
	cout << endl;

	quickSort(array, 0, len - 1);
	for (k = 0; k<len; k++)
		cout << array[k] << " ";//打印数组
	cout << endl;
	return 0;
}

void quickSort(int s[], int l, int r)
{
	if (l< r)
	{
		int i = l, j = r, x = s[l];
		while (i < j)
		{
			while (i < j && s[j] >= x) // 从右向左找第一个小于x的数
				j--;
			if (i < j)
				s[i++] = s[j];
			while (i < j && s[i]< x) // 从左向右找第一个大于等于x的数
				i++;
			if (i < j)
				s[j--] = s[i];
		}
		s[i] = x;
		quickSort(s, l, i - 1); // 递归调用
		quickSort(s, i + 1, r);
	}
}

标签:arr,include,int,namespace,c++,++,算法,排序
From: https://www.cnblogs.com/raymongillichmks/p/17809998.html

相关文章

  • Windows系统 C/C++程序编译后首次执行时间很长 断网则正常执行 的解决方法
    Windows系统C/C++程序编译后首次执行时间很长断网则正常执行的解决方法问题描述运行环境:Win10、Win11或其他Win环境。在各类IDE(包括但不限于VC6/VisualStuido等)编译任意C/C++源码(无论该程序有多简单),首次运行时间异常地长,即在黑窗口无任何输出。等待一段时间后有程序正......
  • C++prime之输入输出文件
    作为一种优秀的语言,C++必然是能操作文件的,但是我们要知道,C++是不直接处理输入输出的,而是通过一族定义在标准库中的类型来处理IO的。‘流’和‘缓冲区’‘流’和‘缓冲区’C++程序把输入输出看作字节流,并且其只检查字节流,不需知道字节来自何方。管理输入包括两步:将流与输入去......
  • Dijkstra, RIP, OSPF:RIP算法
    这部分参考王道bilibili视频:https://www.bilibili.com/video/BV19E411D78Q?p=56&vd_source=63764dd9776224d187bddddb05bf9f3f 例题-1:R6、R4相邻,如左图所示。现在R4的路由表更新为右上表,现在让你写出R6更新后的路由表。  例题-2:这道题中向量6个元素分别代表某个路......
  • 与c++比较学习rust3-2:数据类型
    rust的文章在数据类型数据类型标量类型整形,浮点型,布尔型,字符整形c++rustgoint8_ti8int8int16_ti16int16int32_ti32int32int64_ti64int64-i128-intisizeintunsignedintusizeuintuint8_tu8uint8uint16_tu16uint16ui......
  • m基于5G通信的超密集网络多连接负载均衡和资源分配算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要5G模型的基本结构如下所示:超密集网络是5G通信系统中的重要技术,是现在通信界的研究热点。系统中的每个小小区都是正交频分多址系统,共有TV个小小区,每个小小区使用个OFDMA子载波,信道增益为G。根据其结构图可知,当......
  • m基于5G通信的超密集网络多连接负载均衡和资源分配算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        5G模型的基本结构如下所示:          超密集网络是5G通信系统中的重要技术,是现在通信界的研究热点。系统中的每个小小区都是正交频分多址系统,共有TV个小小区,每个小......
  • 同余方程(扩展欧几里得)(C/C++)
    ax%b=1,则a和b的最大公约数一定是1。#include<cstdio>#include<iostream>usingnamespacestd;inta,q;intx,y;voidexgcd(inta,intb){ if(b==0) { x=1; y=0; return;//得到gcd(b,0)时到达边界值 }// else { exgcd(b,a%b); intk=x; x=y; y=k-......
  • 倍增算法学习指南
    前置芝士倍增思想ST表(SparseTable,稀疏表)是一种简单的数据结构,解决RMQ(区间最大/最小值查询)问题。主要应用倍增思想。O(NlogN)的预处理,O(1)的查询。ST表是用于解决可重复贡献问题的数据结构。[预处理ST表]倍增法递推:用两个等长小区间拼凑一个大区间。f[i][j]表示以第i个数......
  • 对于扩展欧几里得算法的小总结
    对于不定方程\(ax+by=c\)有正数解的充分必要条件是\(c|gcd(a,b)\),证明请看裴蜀定理那么显然的,我们只要能解出方程\(ax+by=gcd(a,b)\)然后把解\(\times\frac{c}{gcd(a,b)}\)即可如何解这个新的方程呢?我们知道\(gcd(a,b)\),并且它等于\(gcd(b,a%b)\),也就是说,方程\(bx+(a%b)y=gcd......
  • 【UEC++游戏案例】向上的小松饼
    一.效果与资源准备1.1游戏演示效果效果:00-课程演示_哔哩哔哩_bilibili  1.2游戏资产素材与源码素材与源码:提示信息-SiKi学院|SiKi学堂-unity|u3d|虚幻|ue4/5|java|python|人工智能|视频教程|在线课程  1.3前期准备创建无初学者内容的空项目将素材文......