一直老写不对的冒泡排序,今天终于整理了一下:相邻两数相互比较,极值最先出现在数组最右端。
注意:当数组作为参数传递时,此时数组是指针,不能用sizeof求数组长度,只能手动将数组长度传进来。
//升序的冒泡排序
void bubbleSort(int a[],int length)
{
for(int i=0;i<length-1;i++)
{
//-1:防止下一步判断的时候数组越界
//-i:让每一次比较的元素减少(每比较完一次就会有一个已排好序即已到达指定位置)
for(int j=0;j<length-1-i;j++)
{
if(a[j]>a[j+1])
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
选择排序:从数组的第一个元素开始直至最后一个元素,令其依次与其后的元素相计较,极值最先出现在数组左端。
//升序的选择排序
void selectSort(int a[],int length)
{
for(int i=0;i<length-1;i++)//控制循环次数
{
for(int j=i+1;j<length;j++)
{
if(a[i]>a[j])
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}