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

/*直接选择排序*/
#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

  

 

最新文章

  1. jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化
  2. @SuppressWarnings的参数
  3. Java-Android【1】-控制手机震动
  4. 0-js判断电脑或手机登录
  5. Git基本使用教程
  6. PHP非阻塞模式 (转自 尘缘)
  7. 关于Failed to convert property value of type [org.quartz.impl.StdScheduler] to required type [org.springframework.scheduling.quartz.SchedulerFactoryBean
  8. mysql 索引优化
  9. Linux下遍历目录及文件,更改权限
  10. 使用XAML在WPF项目中承载ArcGIS Engine地图控件开发
  11. java实现文件转换成二进制存储与取出
  12. YAHOO 34 条前端优化建议
  13. Android官方技术文档翻译——IntelliJ 项目迁移
  14. VMware虚拟机安装Linux系统
  15. PopupWindow计算弹出位置
  16. 用栈来实现队列的golang实现
  17. Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档
  18. Kibana 搜索语法
  19. 模板&#183;点分治(luogu P3806)
  20. [development][vim] vim显示空白字符

热门文章

  1. LAMP环境搭建+配置虚拟域名
  2. 安装PHP到CentOS(YUM)
  3. .Net Core通过json文件 配置管理后台导航菜单
  4. 简述react、redux、react-redux、redux-saga、dva之间的关系
  5. js获取时间及转化
  6. day 15 内置函数
  7. 第1章.Collections类、泛型类和Timing类概述
  8. Beego 输出数据格式JSON、XML、JSONP
  9. 用sort实现对struct的排序
  10. Python 教你 4 行代码开发新闻网站通用爬虫