选择、冒泡、插入、快速排序
选择排序:每次挑第i小的放第i位。
int* select(int* a,int n){
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
return a;
}
冒泡排序:每次挑第i大的放最后第i位(大数后置)。
int* bubble(int* a,int n){
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
return a;
}
插入排序:打牌。
int *insert(int* a,int n){
int *b=new int[n];
b[0]=a[0];
for(int i=1;i<n;i++){
if(a[i]>=b[i-1])
b[i]=a[i];
else{
int m=i-2;
while((m>=0)&&(a[i]<b[m])){
m--; //注意考虑m越出左边的情况
}
for(int j=i;j>m+1;j--)
b[j]=b[j-1];
b[m+1]=a[i];
}
}
return b;
delete[]b;
}
数值交换:
void swap(int &a,int&b){
int temp=a;
a=b;
b=temp;
}
快速排序:左小右大,j记录遇到的小值数,大数交换置前。
void quick(int *a,int start,int end){
if(end<=start) return;
int key=a[start];
int j=start;
for(int i=start;i<=end;i++){
if(a[i]<key){
++j;
swap(a[i],a[j]);
}
}
swap(a[start],a[j]);
quick(a,start,j-1);
quick(a,j+1,end);
}
转载于:https://www.cnblogs.com/huangshan/p/3386486.html
选择、冒泡、插入、快速排序相关推荐
- (选择 冒泡 插入 二分 异或)
文章目录 选择排序 冒泡排序 插入排序 二分 二分查找某个数是否存在 在arr上,找满足大于等于value的最左位置 在arr上,找满足小于等于value的最右位置 局部最小值 异或 选择排序 pub ...
- MATLAB实现三种基本排序(选择+冒泡+插入)
选择排序 %% 选择排序 A=[2 4 6 7 1 9 5 3 8]; num_A=length(A);% A的长度 for i=1:num_A-1now =i;for j=i+1:num_Aif A ...
- php四种基础算法:冒泡,选择,插入和快速排序法
许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要 ...
- 面试必备:冒泡,选择,插入,希尔,归并,快速排序大合集
目录 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 在很多大厂的面试中,算法是最基本的要求,像基础的算法,冒泡,选择,插入等,基本上都会问到. 很多同学往往忽略了其重要程度,只注重编程语 ...
- 四种排序:选择,插入,冒泡,快速排序原理及其对应的时间、空间复杂度解析
四种排序:选择,插入,冒泡,快速排序原理及其对应的时间空间复杂度 首先,在了解四种排序之前,让我们来了解一下什么是时间复杂度和空间复杂度. 时间复杂度:算法的时间复杂度是一个函数,它定性描述该算法的运 ...
- Java五大排序(冒泡,选择,插入,快速,归并)
冒泡,选择,插入,快速,归并这五个排序应该是所有编程语言初学者所遇到过的,可能在实际的编程应用中不会遇到,但对于初学者而言能起到锻炼编程思维的作用.废话不多说,下面进入正题. 冒泡排序 冒泡排序的就是 ...
- 【Java】七大排序(冒泡、选择、插入、快排、归并、堆排、希尔排序)
一.相关归纳总结 1.时间复杂度 O(n^2):冒泡排序,选择排序,插入排序 O(log2n):快速排序,希尔排序,堆排序,归并排序 2.空间复杂度 O(1):插入排序.冒泡排序,选择排序,堆排序,希 ...
- 常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比 - coder_xia的专栏 - 博客频道 - CSDN.NET...
常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比 - coder_xia的专栏 - 博客频道 - CSDN.NET 常用排序算法的c++实现(冒泡,选择,插 ...
- 排序入门的七种算法(冒泡—插入—希尔—堆—选择—归并—快速)
---------文中的部分代码思路参考自<大话数据结构>一书. 目录 冒泡排序 插入排序 希尔排序 堆排序 选择排序 归并排序 快速排序 冒泡排序 原始的冒泡排序是对整个序列相邻两数字间 ...
- C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序
常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...
最新文章
- python requests模块_Python 爬虫教程 requests 模块
- Linux发行版,分类,CentOS下载
- Leetcode 101. 对称二叉树 解题思路及C++实现
- 1.子查询知识体系,单行子查询,多行子查询
- nagios远程系统监测服务
- 更喜欢使用Stream到byte[]
- lintcode-20-骰子求和
- 南充高中计算机老师,2021四川南充教师招聘考试高中信息技术说课稿之《表格的装饰》...
- Bzoj1103 [POI2007]大都市meg
- cat6 万兆_千兆网线和万兆网线有什么区别?
- 有趣的USB接口和颜色分类
- 80386常用内部寄存器
- android intent传文件,android如何用intent跳转到文件管理器
- 珠峰海拔8848米,现在有足够大的纸,厚度是0.01米,折多少次高度可以超过珠穆朗玛峰。(JavaScript)
- 数图互通高校房产管理模块,公租房管理是怎样对合同、续租,申请审核审批管理的;
- 一些广州音字的输入方法
- 说说翻转的数据结构课
- 那些容易被忽视却很常见的安全问题
- 半物理仿真系统——EPB HIL系统解决方案
- 2020年是意义非凡的一年,大专的我面试阿里P6居然过了