选择排序:每次挑第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

选择、冒泡、插入、快速排序相关推荐

  1. (选择 冒泡 插入 二分 异或)

    文章目录 选择排序 冒泡排序 插入排序 二分 二分查找某个数是否存在 在arr上,找满足大于等于value的最左位置 在arr上,找满足小于等于value的最右位置 局部最小值 异或 选择排序 pub ...

  2. 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 ...

  3. php四种基础算法:冒泡,选择,插入和快速排序法

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要 ...

  4. 面试必备:冒泡,选择,插入,希尔,归并,快速排序大合集

    目录 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 在很多大厂的面试中,算法是最基本的要求,像基础的算法,冒泡,选择,插入等,基本上都会问到. 很多同学往往忽略了其重要程度,只注重编程语 ...

  5. 四种排序:选择,插入,冒泡,快速排序原理及其对应的时间、空间复杂度解析

    四种排序:选择,插入,冒泡,快速排序原理及其对应的时间空间复杂度 首先,在了解四种排序之前,让我们来了解一下什么是时间复杂度和空间复杂度. 时间复杂度:算法的时间复杂度是一个函数,它定性描述该算法的运 ...

  6. Java五大排序(冒泡,选择,插入,快速,归并)

    冒泡,选择,插入,快速,归并这五个排序应该是所有编程语言初学者所遇到过的,可能在实际的编程应用中不会遇到,但对于初学者而言能起到锻炼编程思维的作用.废话不多说,下面进入正题. 冒泡排序 冒泡排序的就是 ...

  7. 【Java】七大排序(冒泡、选择、插入、快排、归并、堆排、希尔排序)

    一.相关归纳总结 1.时间复杂度 O(n^2):冒泡排序,选择排序,插入排序 O(log2n):快速排序,希尔排序,堆排序,归并排序 2.空间复杂度 O(1):插入排序.冒泡排序,选择排序,堆排序,希 ...

  8. 常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比 - coder_xia的专栏 - 博客频道 - CSDN.NET...

    常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比 - coder_xia的专栏 - 博客频道 - CSDN.NET 常用排序算法的c++实现(冒泡,选择,插 ...

  9. 排序入门的七种算法(冒泡—插入—希尔—堆—选择—归并—快速)

    ---------文中的部分代码思路参考自<大话数据结构>一书. 目录 冒泡排序 插入排序 希尔排序 堆排序 选择排序 归并排序 快速排序 冒泡排序 原始的冒泡排序是对整个序列相邻两数字间 ...

  10. C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序

    常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...

最新文章

  1. python requests模块_Python 爬虫教程 requests 模块
  2. Linux发行版,分类,CentOS下载
  3. Leetcode 101. 对称二叉树 解题思路及C++实现
  4. 1.子查询知识体系,单行子查询,多行子查询
  5. nagios远程系统监测服务
  6. 更喜欢使用Stream到byte[]
  7. lintcode-20-骰子求和
  8. 南充高中计算机老师,2021四川南充教师招聘考试高中信息技术说课稿之《表格的装饰》...
  9. Bzoj1103 [POI2007]大都市meg
  10. cat6 万兆_千兆网线和万兆网线有什么区别?
  11. 有趣的USB接口和颜色分类
  12. 80386常用内部寄存器
  13. android intent传文件,android如何用intent跳转到文件管理器
  14. 珠峰海拔8848米,现在有足够大的纸,厚度是0.01米,折多少次高度可以超过珠穆朗玛峰。(JavaScript)
  15. 数图互通高校房产管理模块,公租房管理是怎样对合同、续租,申请审核审批管理的;
  16. 一些广州音字的输入方法
  17. 说说翻转的数据结构课
  18. 那些容易被忽视却很常见的安全问题
  19. 半物理仿真系统——EPB HIL系统解决方案
  20. 2020年是意义非凡的一年,大专的我面试阿里P6居然过了

热门文章

  1. Hyperledger Fabric教程(12)-- 交易过程
  2. 关于账号密码校验的两种IO流操作
  3. SpringBoot启动o.s.b.d.LoggingFailure… 错误解决方法
  4. DP动态规划之01背包问题
  5. matlab 画图直接存储_Matlab通过图文件找原始数据
  6. php之预处理(msqli和PDO)
  7. spring简易学习笔记三(AOP)
  8. git SSH 公钥拉取代码(使用及配置)
  9. MongoDB 固定集合详解
  10. C刷题记录-1020