Linux C++ 直接选择排序,冒泡排序

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

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

 

猜你喜欢

转载自www.cnblogs.com/mingyue605/p/10169240.html
今日推荐