编程冒泡排序

来源:百度知道 编辑:UC知道 时间:2024/06/15 07:14:37
#include<iostream.h>

void main()
{
int numbers[3],total=3;
numbers[0]=2;
numbers[1]=1;
numbers[2]=3;
int j,i,temp;

for( i=0;i<(total-1);++i)
{
for(j=1;j<total;++j)
{
if(numbers[j-1]>numbers[j])
{
temp=numbers[j];
numbers[j]=numbers[j-1];
numbers[j-1]=temp;
}
}
}
cout<<numbers[0];
}
这是一个从小到大冒泡排序;;请解释一下每行的作用,意思..
我弄懂后加50分!!各位大侠帮帮忙

#include<iostream.h>

void main()
{
int numbers[3],total=3;
numbers[0]=2;
numbers[1]=1;
numbers[2]=3;
int j,i,temp;

////定义变量看得懂吧?

for( i=0;i<(total-1);++i) //循环开始,让I从0递增到TOTAL-2
{
for(j=1;j<total;++j) //让J从1变到TOTAL-1
{
// TOTAL是一个数组中总的数的个数,这里一共有三个数

if(numbers[j-1]>numbers[j]) //如果出于J-1位置的数比J大,则把这两个数交换
{
temp=numbers[j];
numbers[j]=numbers[j-1];
numbers[j-1]=temp;
//这是交换过程,看不懂的话想想怎么用一个空杯子把原来两满杯水交换
}
}
}
cout<<numbers[0];
}

//这里的冒泡就是每一次选出整个数组中最小的数,把它放到数组中的最后一个位置

void sort(int a[],int n)
{int i,j,t;
n--;
while(n>0)
{j=0;
for(i=0;i<n;i++)
if(a[i]>a[i+1])
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
j=i;
}
n=j;
}
}
j作为标记,记录每次循环后的位置,这个可以大大省去不必要的循环

//交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的