选择排序的思想是:每次从待排序中选择最小(大)的元素插入已经排好的序列中。

/*直接选择排序*/
#include <iostream>
using namespace std; void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
} int main()
{
int a[]={5,4,10,20,12,3,2,1,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int); //计算数组元素个数 for(int i=0;i<size-1;i++)
{
int last = i;
for(int j=i+1;j<size;j++) //选择后面最小元素
{
if(a[j] < a[last])
{
last = j;
}
}
swapp(a[i],a[last]);//交换
} //输出
for(int i=0;i<size;i++)
{
cout<<a[i]<<" ";
} return 0;
}

运行结果: 

1 2 3 3 4 5 5 6 10 12 20 32 43 56

 冒泡排序思想:比较相邻连个元素大小,选择最大(小)的排序

/*冒泡排序(for循环)*/
#include <iostream>
using namespace std; void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
} int main()
{
int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int);//计算数组元素个数 //for循环
for(int i=0;i<size-1;i++) //遍历各个元素
{
for(int j=0; j<size-i; j++) //找出了最大(小)的一个
{
if(a[j+1] < a[j])
swapp(a[j],a[j+1]); //交换最大(小)的一个
}
}
//输出
for(int i=0; i<size; i++)
{
cout<<a[i]<<" ";
} return 0;
}

 运行结果:

1 2 3 3 4 5 5 6 10 12 20 32 43 56
/*冒泡排序(while循环)*/
#include <iostream>
using namespace std; void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
} int main()
{
int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int);//计算数组元素个数 //while循环
int loop = size-1;//最大循环次数
while(loop>0) //
{
int lastExchangeIndex = 0; //标记本次交换最后一对元素的最小小标
for(int i=0; i<loop; i++)
{
if(a[i+1] < a[i])
{
swapp(a[i],a[i+1]);
lastExchangeIndex = i;
}
}
loop = lastExchangeIndex; //标记本次交换最后一对元素的最小小标
}
//输出
for(int i=0; i<size; i++)
{
cout<<a[i]<<" ";
} return 0;
}

运行结果:

1 2 3 3 4 5 5 6 10 12 20 32 43 56
/*快速排序*/
#include <iostream>
using namespace std; void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
} int SortSwap(int a[], int left, int right)
{
int &pos = a[right];
while(left < right)
{
while(left <right && a[left] <= pos)
{
++left;
}
while(left < right && a[right] >= pos)
{
--right;
}
swapp(a[left],a[right]);
}
swapp(a[left],pos);
return left;
} void QuickSort(int a[],int left,int right)
{
if(left >= right)
{
return;
} int pos = SortSwap(a,left,right);
QuickSort(a,left,pos - 1);
QuickSort(a,pos + 1,right);
} int main() {
int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int); QuickSort(a,0,size-1);
for(int i=0; i<size; i++)
{
cout<<a[i]<<" ";
} return 0;
}

 运行结果:

1 2 3 3 4 5 5 6 10 12 20 32 43 56

  

 

Linux C++ 直接选择排序,冒泡排序,快速排序的更多相关文章

  1. Javascript中的冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序 算法性能分析

    阿里面试中有一道题是这样的: 请用JavaScript语言实现 sort 排序函数,要求:sort([5, 100, 6, 3, -12]) // 返回 [-12, 3, 5, 6, 100],如果你 ...

  2. JS中冒泡排序,选择排序,快速排序

        var arr = [1,4,2,9,7,6,5,4,7,5];     // 冒泡排序(通俗的说就是j 和 j+1打,谁赢了谁去后面)       for(var i = 1;i<ar ...

  3. 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版

    每次开始动手写算法,都是先把插入排序,冒泡排序写一遍,十次有九次是重复的,所以这次下定决心,将所有常规的排序算法写了一遍,以便日后熟悉. 以下代码总用一个main函数和一个自定义的CommonFunc ...

  4. JS-排序详解:冒泡排序、选择排序和快速排序

    JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在 ...

  5. 几种排序方式的java实现(01:插入排序,冒泡排序,选择排序,快速排序)

    以下为集中排序的java代码实现(部分是在引用别人代码): 插入排序(InsertSort): //代码原理 public static void iSort(int[] a){ for(int i ...

  6. 选择排序、快速排序、归并排序、堆排序、快速排序实现及Sort()函数使用

    1.问题来源 在刷题是遇到字符串相关问题中使用 strcmp()函数. 在函数比较过程中有使用 排序函数 Sort(beg,end,comp),其中comp这一项理解不是很彻底. #include & ...

  7. [Java]数组排序-选择排序 冒泡排序 插入排序

    1 选择排序  原理:a 将数组中的每个元素,与第一个元素比较          如果这个元素小于第一个元素, 就将这个         两个元素交换.       b 每轮使用a的规则, 可以选择出 ...

  8. [模板]选择排序&&冒泡排序&&插入排序

    #include<iostream> #include<cstdio> #include<bits/stdc++.h> using namespace std; v ...

  9. 选择排序&冒泡排序&折半查找

    //选择排序 void test2(int a[],int len){ //每次找出一个最小值,最小值依次与原数组交换位置,通过下标来完成交换,最小值下标每次都在变,变量存储 //    假如第一个是 ...

随机推荐

  1. MySQL索引底层数据结构

    一.何为索引? 1.索引是帮助数据库高效获取数据的排好序的数据结构. 2.索引存储在文件中. 3.索引建多了会影响增删改效率. (下面这张图为计算机组成原理内容,每查询一次索引节点,都会进行一次磁盘I ...

  2. Kakfa集群(2.11-0.10.1.0)版本滚动升级方案

    Kafka集群版本升级(2.11-0.10.1.0)升级(2.11-0.10.2.2) 官网升级说明: 一.系统环境Zookeeper集群:172.16.2.10172.16.2.11172.16.2 ...

  3. System.Text.Json 自定义Converter实现时间转换

    Newtonsoft.Json与System.Text.Json区别 在 Newtonsoft.Json中可以使用例如 .AddJsonOptions(options => { options. ...

  4. 安装Nexus到Linux(源码)

    运行环境 系统版本:CentOS Linux release 7.4.1708 (Core) 软件版本:Sonatype-Nexus-3.14.0 硬件要求:无 安装过程 1. 调整系统参数 需要调整 ...

  5. [CF1311B] WeirdSort

    Solution 按照 \(p[i]\) 进行分段,如果某个 \(k\) 不存在 \(p[i]=k\),那么就把 \(i,i+1\) 分割开 处理出每一段的左端点和右端点 进而处理出每段的最小值和最大 ...

  6. css的网页布局案例

    常见行布局: 导航使用position:fixed固定住 导航会脱离文档流,不占据空间 导致下面的元素上移,因此需要将下面的元素的padding-top设置成导航的高度 <!DOCTYPE ht ...

  7. NoSQLBooster如何MongoDB的部分文档从一个集合拷贝到另外一个集合中

    假设MongoDB数据库中存有collection_A和collection_B两个集合,如下图所示: (一)先从集合collection_A中拷贝选择的文档 打开collection_A,看到目前有 ...

  8. VSCode(主进程)

    Overview(总览) SETUP(设定) Overview(总览) Linux(略) macOS(略) Windows 使用WSL,您可以在Windows上安装和运行Linux发行版.这使您能够在 ...

  9. Mac下git的安装配置以及gerrit初次使用

    1.Mac下git下载 在终端首次运行git命令,若未安装,会提示下载开发者工具Xcode,根据提示下载即可: 2.查看git版本 git version 2.首次使用git配置 git config ...

  10. MySQL 8 批处理模式

    shell> mysql -h host -u user -p < batch-file 强制执行脚本,即使某些语句参数错误,可以添加 --force 参数 如果MySQL运行在Windo ...