用C++实现冒泡排序
来源:互联网 发布:剑三怎么捏脸数据 编辑:程序博客网 时间:2024/05/18 00:42
本文原创,转载请注明出处(羅小亮博客)。如果本文如果有雷同观点,纯属巧合。如果有引述他人成果,必会给出处。
首先,冒泡排序的核心思想是两两相邻记录的关键字进行比较,将小的值置换在大的值前面。C++代码实现如下:
#include <iostream>
using namespace std;
void BubbleSort(int a[],int n);
int main()
{
using namespace std;
void BubbleSort(int a[],int n);
int main()
{
int a[10]={5,9,4,3,8,1,2,6,7,0};BubbleSort(a,10);for(int i=0;i<10;++i){
cout <<a[i];
}cout << endl;system("pause");//在vs2008中运行,是为了让窗口停留return 0;
}
void BubbleSort(int a[],int n)
{
void BubbleSort(int a[],int n)
{
int i;int j;int temp;bool k=true; //k的作用下面再解释for(i=0;(i<n-1)&&k;++i){
k=false;for(j=n-1;j>0;--j){
if(a[j]<a[j-1]){
temp=a[j];a[j]=a[j-1];a[j-1]=temp;k=true;
}
}
}
}
- 对k的解释如下,当出现如下序列:0,1,2,3,4,5,6,7,8,9时,这个序列已经排好了,也就是说无需进行冒泡排序(因为如果还像冒泡排序一样比较的话则会影响效率)。其实很容易理解,当进行第一次外循环时k满足true,则进入循环体,这时k被置为false。此时,进入内循环,如果是出现像上述那样已经排好的序列,那么if循环体则不会执行,也就是说k不会被置为true。那么跳出内循环后,外循环因不满足条件也跳出循环,所以 k的使用原理就是这样,是外循环不需要完全执行n-2次就提前结束了。
- 上述是一开始就已经排好序了。如果一开始没排好序,但是在外循环结束之前就已经排好序的话,那么k的作用也可以直接避免继续的无谓的循环。例如:1,0,2,3,4,5,6,7,8,9。外循环只需要进行一次,那么序列就变成0,1,2,3,4,5,6,7,8,9。这个时候再进入循环,那么原理和上面一样,不会再执行If语句,那么k被置为false,外循环提前结束。这次外循环也不需要完全执行n-2次就提前结束了。
阅读全文
0 0
- 冒泡排序C实现
- C实现冒泡排序
- C语言-用指针实现冒泡排序
- C语言实现冒泡排序
- 冒泡排序C语言实现
- 冒泡排序C语言实现
- 实现冒泡排序(c语言)
- C 实现冒泡排序
- 冒泡排序--C语言实现
- 冒泡排序--c语言实现
- 冒泡排序(C语言实现)
- 冒泡排序(C实现)
- 冒泡排序C语言实现
- c语言实现冒泡排序
- linux c 实现冒泡排序
- c语言实现冒泡排序
- C语言实现冒泡排序
- C语言实现冒泡排序
- kotlin学习笔记——接口与委托
- JAVA在ACM中的应用
- Struts2、SpringMVC、Servlet(Jsp)性能对比 测试
- spring-boot actuator(监控)配置和使用
- html背景色渐变
- 用C++实现冒泡排序
- android知识网络
- python3-numpy
- 回声消除的原理和应用场景
- python操作docx文档
- HDU1007:Quoit Design(分治)
- element-ui的分页el-pagination的坑,
- 微信小程序 全站开发 thinkPHP 5.0+小程序商城
- Ubuntu 16.04 安装遇到"System program problem detected"解决方案