c++几种排序算法代码
#include <iostream>
#include <vector>
using namespace std; //交换int
void swap(int& a, int& b){
int temp = a;
a = b;
b = temp;
} //冒泡
void BulletSort(vector<int>& nums){
int n = nums.size();
for (int i = ; i < nums.size()-; i++){
for (int j = ; j < nums.size() - i -; j++){
if (nums[j] > nums[j+]){
swap(nums[j], nums[j+]);
}
}
}
} //快排
void fastSort(vector<int>&num, int first, int last){
if (first < last){
int i = first;
int j = last;
int seed = num[i];
while (i<j){
while (i < j && num[j] >= seed){
j--;
}
if (i < j){
num[i++] = num[j];
}
while (i <j && num[i] <= seed){
i++;
}
if (i < j){
num[j--] = num[i];
}
}
num[i] = seed;
fastSort(num, first, i - );
fastSort(num, i + , last);
} } //插入
void InsertSort(vector<int>& nums){
int n = nums.size();
for (int i = ; i < n; i++){
for (int j = i; j > ; j--){
if (nums[j] < nums[j - ]){
swap(nums[j], nums[j - ]);
}
}
}
} //归并数组
void mergeArray(vector<int>&nums, int first, int mid, int last, vector<int>temp){
int i = first;
int j = mid + ;
int m = mid;
int n = last;
int k = ;
while (i <= m&& j<=n){
if (nums[i] < nums[j]){
temp[k++] = nums[i++];
}
else{
temp[k++] = nums[j++];
}
}
while (i<=m){
temp[k++] = nums[i++];
}
while (j <= n){
temp[k++] = nums[j++];
}
for (int i = ; i < k; i++)
{
nums[first+i] = temp[i];
}
} //归并
void mergeSort(vector<int>& nums, int first, int last, vector<int>temp){
if (first<last){
int mid = (first + last) / ;
mergeSort(nums, first, mid, temp);
mergeSort(nums, mid + , last, temp);
mergeArray(nums,first,mid,last,temp); }
} int main()
{
vector<int>test;
vector<int>temp(, );
test.push_back();
test.push_back();
test.push_back();
test.push_back();
//BulletSort(test);
//fastSort(test, 0, 3);
//InsertSort(test);
//mergeSort(test, 0,3,temp);
return ; } 几种算法的比较如下图所示

c++几种排序算法代码的更多相关文章
- Java 的八种排序算法
Java 的八种排序算法 这个世界,需要遗忘的太多. 背景:工作三年,算法一问三不知. 一.八种排序算法 直接插入排序.希尔排序.简单选择排序.堆排序.冒泡排序.快速排序.归并排序和基数排序. 二.算 ...
- 几种排序算法的学习,利用Python和C实现
之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算 ...
- 学习Java绝对要懂的,Java编程中最常用的几种排序算法!
今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来! ,群里有免费的学习视频和项目给大家练手.大神有空时也 ...
- 排序—时间复杂度为O(n2)的三种排序算法
1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...
- java算法03 - 常用的8种排序算法
Java常用的八种排序算法: 插入排序 - 直接插入排序 每次将待排序的记录按照关键字的大小,插入到前面已经排好序的记录的适当位置.直到全部记录插入完成. 代码实现 /** * 直接插入排序 O(n^ ...
- 史上最全单链表的增删改查反转等操作汇总以及5种排序算法(C语言)
目录 1.准备工作 2.创建链表 3.打印链表 4.在元素后面插入元素 5.在元素前面增加元素 6.删除链表元素,要注意删除链表尾还是链表头 7.根据传入的数值查询链表 8.修改链表元素 9.求链表长 ...
- JavaScript实现的7种排序算法
所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序.这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率.对于排序,我们首先要求 ...
- 秒杀9种排序算法(JavaScript版)
一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...
- PHP的几种排序算法的比较
这里列出了几种PHP的排序算法的时间比较的结果,,希望对大家有所帮助 /* * php 四种排序算法的时间与内置的sort排序比较 * 3000个元素,四种算法的排序所用的时间比较 * 冒泡排序 85 ...
随机推荐
- 判断QString是否为纯数字,查找自身最长重复子字符串
1.判断QString是否为纯数字 bool IsDigitString(QString strSource) { bool bDigit = false; if (strSource.isEmpty ...
- m_Orchestrate learning system---十六、如何快速在一堆字符图标中找到所需
m_Orchestrate learning system---十六.如何快速在一堆字符图标中找到所需 一.总结 一句话总结:find查找字符 比如说找teacher feedback 的图标,可以多 ...
- select … into outfile 备份恢复(load data)以及mysqldump时间对比
select … into outfile 'path' 备份 此种方式恢复速度非常快,比insert的插入速度要快的多,他跟有备份功能丰富的mysqldump不同的是,他只能备份表中的数据,并不能包 ...
- (转载) Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题 标签: scrollviewandroid滑动嵌套 2015-07-16 17:24 1112 ...
- PostgreSQL 索引膨胀
索引膨胀,主要针对B-tree而言 索引膨胀的几个来源: 大量删除发生后,导致索引页面稀疏,降低了索引的使用效率: PG9.0之前的版本,vacuum full会同样导致索引页面稀疏: 长时间运行的事 ...
- Linux部署之批量自动安装系统之Kickstart篇
1. 安装 2. 在桌面环境下啊配置 3. Kickstart之基本配置 4. Kickstart之安装方法 5. ...
- SAI 绘画一个卡通动漫人物详解
本教程介绍使用SAI 绘画一个卡通漫画人物教程 ,教程很详细,动起你的小手一起来试试吧! 软件下载:http://www.dongmansoft.com/xiazai.html
- HDU 6051 If the starlight never fade(原根+推式子)
题目大意: 设\(f(i)\)为使\((x+y)^i \equiv x^i (mod\ p)\)成立的(x,y)的对数.其中\(1 \leq x \leq p-1 , 1\leq y\leq m\), ...
- BZOJ 2141 排队(CDQ分治)
我们把每一次交换看做两个插入两个删除.然后就是一个三维偏序.时间一维,下标一维,权值一维. #include<iostream> #include<cstring> #incl ...
- luoguP1555 尴尬的数字(暴力+map)
题意 题解 枚举每一个可能的二进制数.扔到一个map里 再枚举每一个可能的三进制数看map有没有就行了 反正就是很水 #include<iostream> #include<cstr ...