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

/*直接选择排序*/
#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. 疫情之下,使用FRP实现内网穿透,远程连接公司电脑进行办公

    当前情况下,经常会有需要到公司电脑进行一些操作,比如连接内网OA,数据库或者提交文档.为了减少外出,将使用frp进行内网穿透的方法进行一个说明. 前提条件 1. 一台拥有公网 IP 的设备(如果没有, ...

  2. .NET CORE(C#) WPF 值得推荐的动画菜单设计

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF 值得推荐的动画菜单设计 阅读导航 本文背景 代码实现 本文 ...

  3. java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码

    .   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限      角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限.      按钮权限: 给角色分配按钮权限.2 ...

  4. Session注销后,浏览器后退仍显示Session信息

    初学JavaWeb,在一次测试登录功能的时候,发现了登进去后,点击退出按钮注销session,浏览器按后退能够显示session信息,并且点击登录还能够不输入密码登录(前端页面没写JS限制输入后登录) ...

  5. jdk8中接口中的特性

    jdk8中可以定义静态方法(public static)和默认方法(public default),public 可以省略 调用接口中的静态方法时:只能通过接口本身来调用,不能被该接口的实现类来调 调 ...

  6. windows 2008r2+php5.6.28搭建详细过程

    安装IIS7 1.打开服务器管理器(开始-计算机-右键-管理-也可以打开),添加角色 直接下一步 勾选Web服务器(IIS),下一步,有个注意事项继续下一步(这里我就不截图了) 勾选ASP.NET会弹 ...

  7. 剑指offer-面试题42-连续子数组的最大和-动态规划

    /*题目; 输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和. 要求时间复杂度为O(n). 先输入数组的格式,再依次输入数组的值.*//*思路: f(i) = pDa ...

  8. 破局AI落地难,数据标注行业需率先变革丨曼孚科技

    ​2019年,国内人工智能领域的投融资热情大幅降低,相当数量的AI企业彻底消失在了历史的长河中,“人工智能寒潮已至”甚至成为行业年度热词. 与前几年创业与投资热情齐头并进的盛况相比,近段时间的AI行业 ...

  9. 数据结构(集合)学习之Set

    集合 框架关系图: Collection接口下面有三个子接口:List.Set.Queue.此篇是关于Set<E>的简单学习总结. 补充:HashTable父类是Dictionary,不是 ...

  10. Win10桌面菜单弹出cmd解决办法

    现象 Win10右键菜单打开弹出命令提示符 原有个性化.显示设置.网络和Internet设置无法使用 解决 注册表定位到HKEY_CURRENT_USER\Software\Classes\ ms-s ...