非计算机学渣渣一枚,学习笔记记录
冒泡排序法
#include<iostream>
using namespace std;
int Sort(int data[],int num)
{
for(int i=0;i<num-1;i++)// 两两比较的操作次数
{
for(int j=0;j<num-i-1;j++)//冒泡排序的思想是前一个和后一个对比,最后固定了i个
{
if(data[j]>data[j+1])
{ // cout<<j<<endl;
//cout<<data[j+1]<<endl;
int temp=data[j+1];
data[j+1]=data[j];
data[j]=temp;
}
}
}
}
int main()
{
int data[10]={2,3,1,5,5,6,10,11,12,13};
int num=sizeof(data) /sizeof(data[0]);
Sort2(data,num);
int j=0;
while(j<num)
{
cout<<data[j]<<endl;
j++;
}
return 0;
}
一种改进的冒泡算法,当待排序的序列有序的时候,可以减少计算量
int Sort2(int data[],int num)
{ int count=0;//用来记录外循环的次数
bool flag=true;
for(int i=0;i<num-1&&flag;i++)// 如果flag=true 就说明上一轮还进行了交换,如果flag为flase 那么说明数组已经是有序的就不需要进行交换了
{ count++;
flag=false;
for(int j=0;j<num-i-1;j++)//冒泡排序的思想是前一个和后一个对比,最后固定了i个
{
if(data[j]>data[j+1])
{
//cout<<j<<endl;
// cout<<"data[j+1]"<<data[j+1]<<endl;
int temp=data[j+1];
data[j+1]=data[j];
data[j]=temp;
flag=true;
}
}
}
cout<<"count"<<count<<endl;
}
int main()
{
int data[10]={2,3,1,5,5,6,10,11,12,13};
int num=sizeof(data) /sizeof(data[0]);
Sort2(data,num);
int j=0;
while(j<num)
{
cout<<data[j]<<endl;
j++;
}
return 0;
}