冒个泡,排个序


冒泡排序是常用的排序算法,用于对数组内元素进行排序 ;


排序要点:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
3、重复以上的步骤,每次比较次数-1,直到不需要比较


示例: 将数组 { 410000,2,81,0,5,71,1,3991,900 } 进行升序排序


1、array + 从后往前冒泡:

#include<iostream>
using namespace std;


void BubbleSort( int * arr, int len)
{
	// 开始冒泡排序,第一层循环是排序轮数
	for(int i=0;i < (len -1 ); i++ )  
	{	
	   //二层实现循环对比,对比次数 = 元素个数 - 当前轮数 - 1
       for(int j=0; j < (len-i-1); j++ )
	   {   
	      if (arr[j] > arr[j+1])
		  {
		     int tmp = arr[j];
		     arr[j] = arr[j+1];
		     arr[j+1] = tmp;
		  }
	   }
	}	
}

void PrintArray( int * arr , int len ) 
{
    for(int a = 0; a < len; a++)
	{	
	   cout << arr[a] << endl;
	}
}


int main() {
	
    int arr[9] = { 410000,2,81,0,5,71,1,3991,900 };
	int len = sizeof(arr) / sizeof(int);	
	BubbleSort( arr, len);
	PrintArray( arr, len);	
	
 	return 0;
	
}

输出结果如下:

0
1
2
5
71
81
900
3991
410000

2、vector + 从前往后冒泡:

#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>

void BubbleSort( vector<int> &vv)
{
	// 开始冒泡排序,第一层循环是排序轮数
	for(int i=0;i < vv.size(); i++ )  
	{	
	   //从前往后移动对比: 二层实现循环对比,对比次数 = 元素个数 - 当前轮数 - 1
       for(int j=i+1; j < vv.size(); j++ )
	   {   
	      if (vv[i] > vv[j])
		  {
		     int tmp = vv[j];
		     vv[j] = vv[i];
		     vv[i] = tmp;
		  }
	   }
	}	
}

void PrintVector( int a  ) 
{	
    cout << a << endl;	
}


int main() {
	
    int arr[9] = { 666,12,81,0,52,71,1,391,90 };
    vector<int> vv(arr, arr + sizeof(arr)/sizeof(arr[0]));
    
    BubbleSort( vv);
    
    // for_each(iterator beg, iterator end, _func);
	for_each( vv.begin(),  vv.end(), PrintVector );	
	
 	return 0;
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值