c++ 排序 冒泡 插入 选择 快速
//冒泡
#include <iostream>
using namespace std; void bubbleSort(int* list,int index)
{
for(int i=index;i>;i--) //index 最大的那个索引
{
for(int j=;j<i;j++)
{
if(list[j]>list[j+])
{
int temp;
temp=list[j];
list[j]=list[j+];
list[j+]=temp;
}
}
}
} void main()
{
int list[]={,,,,,,,,}; for(int i=;i<;i++)
cout<<list[i]<<" | ";
cout<<endl; bubbleSort(list,);//index:= 9-1 for(int i=;i<;i++)
cout<<list[i]<<" | ";
} //插入排序法
#include <iostream>
using namespace std; void insertSort(int* list,int index)
{
//在排序之前我们需要搞清一个思路,新插入一个数据的时候,排序过后的数组都是
//从小到大排列好的,所以我们需要从后往前查找,直到找到比我们要插入的数字还小的
//值。这个时候我们需要一个变量j作为标识 //从1开始
for(int i=;i<=index;i++) //index 最大的那个索引
{
int insertNode=list[i];
int j;
for(j=i-;j>=;j--)
{
if(insertNode<list[j])
list[j+]=list[j];
else
break; //因为前面的已经排序好,所以找到位置后 就可以退出了
}
list[j+]=insertNode;
} } void main()
{
int list[]={,,,,,,,,}; for(int i=;i<;i++)
cout<<list[i]<<" | ";
cout<<endl; insertSort(list,);//index:= 9-1 for(int i=;i<;i++)
cout<<list[i]<<" | ";
} //选择排序法
#include <iostream>
using namespace std; void selectSort(int* list,int index)
{
for(int i=;i<=index;i++) //index 最大的那个索引
{
int minValue=list[i];
int minIndex=i; for(int j=i;j<=index;j++)
{
if(minValue>list[j])
{
minValue=list[j];
minIndex=j;
}
} int temp;
temp=list[i];
list[i]=list[minIndex];
list[minIndex]=temp;
} } void main()
{
int list[]={,,,,,,,,}; for(int i=;i<;i++)
cout<<list[i]<<" | ";
cout<<endl; selectSort(list,);//index:= 9-1 for(int i=;i<;i++)
cout<<list[i]<<" | ";
} //快速排序法
#include <iostream>
using namespace std; int Partition(int a[], int low, int high)
{
int x = a[high];//将输入数组的最后一个数作为主元,用它来对数组进行划分
int i = low - ;//i是最后一个小于主元的数的下标
for (int j = low; j < high; j++)//遍历下标由low到high-1的数
{
if (a[j] < x)//如果数小于主元的话就将i向前挪动一个位置,并且交换j和i所分别指向的数
{
int temp;
i++;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
//经历上面的循环之后下标为从low到i(包括i)的数就均为小于x的数了,现在将主元和i+1位置上面的数进行交换
a[high] = a[i + ];
a[i + ] = x;
return i + ;
} void QuickSort(int a[], int low, int high)
{
if (low < high)
{
int q = Partition(a, low, high);
QuickSort(a, low, q - );
QuickSort(a, q + , high);
}
} void main(){ int arry[] = {,,,,,,,,}; for (int i = ; i < ; i++)
{
cout << arry[i] <<" | ";
} cout<<endl;
QuickSort(arry, , );
for (int i = ; i < ; i++)
{
cout << arry[i] <<" | ";
}
}
c++ 排序 冒泡 插入 选择 快速的更多相关文章
- 《java数据结构与算法》系列之“简单排序"-冒泡,选择,插入
好几天又没写,因为这几天很闲,平时忙的时候自己再累都不会睡着,但是呢这没事了,照理说应该是不瞌睡了,结果还睡着了. 所以说,人很贱.也验证了一句话,没有目标的人其实最无聊.人一定要有自己的工作,这工作 ...
- Java数据结构和算法(三)--三大排序--冒泡、选择、插入排序
三大排序在我们刚开始学习编程的时候就接触过,也是刚开始工作笔试会遇到的,后续也会学习希尔.快速排序,这里顺便复习一下 冒泡排序: 步骤: 1.从首位开始,比较首位和右边的索引 2.如果当前位置比右边的 ...
- java面试准备之基础排序——冒泡与选择排序
选择排序: [java] public void select(int[] arr){ for(int i=0;i<arr.length;i++){ ...
- php六种基础算法:冒泡,选择,插入,快速,归并和希尔排序法
$arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序法 * 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来. * 比 ...
- 排序算法练习--JAVA(:内部排序:插入、选择、冒泡、快速排序)
排序算法是数据结构中的经典算法知识点,也是笔试面试中经常考察的问题,平常学的不扎实笔试时候容易出洋相,回来恶补,尤其是碰到递归很可能被问到怎么用非递归实现... 内部排序: 插入排序:直接插入排序 选 ...
- Java四种排序:冒泡,选择,插入,二分(折半插入)
四种排序:冒泡,选择,插入,二分(折半插入) public class Test{ // public static void main(String[] args) { // Test t=new ...
- python排序算法实现(冒泡、选择、插入)
python排序算法实现(冒泡.选择.插入) python 从小到大排序 1.冒泡排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(len(s)) ...
- python 数据结构与算法之排序(冒泡,选择,插入)
目录 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 数据结构与算法: 算法: 数据结构 冒泡排序法 选择排序法 插入排序法 数据结构与算法之排序(冒泡,选择,插入) 为什么学习 ...
- 左神算法第一节课:复杂度、排序(冒泡、选择、插入、归并)、小和问题和逆序对问题、对数器和递归(Master公式)
第一节课 复杂度 排序(冒泡.选择.插入.归并) 小和问题和逆序对问题 对数器 递归 1. 复杂度 认识时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数 ...
随机推荐
- 013.CI4框架CodeIgniter数据库操作之:查询数据库,并让数据以数组的方式返回查询结果
01. 我们在CI4框架中的Model文件夹新建一个User_model.php的文件,使用的是getResultArray,表示并让数据以数组的方式返回查询结果,代码如下: <?php nam ...
- 数据结构——KMP(串)
KMP一个非常经典的字符串模式匹配算法,虽然网上有很多kmp算法的博客,但是为了更好的理解kmp我还是自己写了一遍(这个kmp的字符串存储是基于堆的(heap),和老师说的定长存储略有不同,字符串索引 ...
- c#查看本机网络端口和对应的程序名
360安全卫士里面有个组件叫流量防火墙,感觉挺好用,但是不想安装360全家桶,于是自己捣鼓着用C#写一个比较简化的版本. 查看电脑上开启的TCP或UDP端口,可以用netstat命令,netstat用 ...
- spingcloud--hystrix(断路器)
hystrix由来:服务器宕机或者依赖关系失败. hystrix: Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时.异常等,Hyst ...
- 如何禁用AD OU 下面的邮箱用户的Exchange ActiveSync 和 适用于设备的OWA
Get-Mailbox -OrganizationalUnit QQ禁用名单 | Set-CASMailbox -ActiveSyncEnabled $false -OWAforDevicesEna ...
- CSS - input 只显示下边框
CSS 样式 : border:none; border-bottom: 1px solid #000
- 基于Windows平台的Python多线程及多进程学习小结
python多线程及多进程对于不同平台有不同的工具(platform-specific tools),如os.fork仅在Unix上可用,而windows不可用,该文仅针对windows平台可用的工具 ...
- Elasticsearch 修改数据
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- vue学习(二)Vue常用指令
2 Vue常用指令 1. vue的使用要从创建Vue对象开始 var vm = new Vue(); 2. 创建vue对象的时候,需要传递参数,是json对象,json对象对象必须至少有两个属性成员 ...
- python基础(一)内置类型及方法
python 内置类型主要包含7大类: 数字 序列 映射 文件 类 实例 异常 其中,最常用数据类型为序列 序列 python中包含7种内建序列 列表(list):由方括号构成,用逗号分隔项目: [a ...