常用算法经典代码(C++版)
一、快速排序
void qsort(int x,int y) //待排序的数据存放在 a[1]..a[n]数组中
{int h=x,r=y;
int m=a[(x+y)>>1]; //取中间的那个位置的值
while(h<r)
{while (a[h]<m) h++; //比中间那个位置的值小,循环直到找一个比中间那个值大的
while (a[r]>m) r--; //比中间那个位置的值大,循环直到找一个比中间那个值小的
if(h<=r)
{int temp=a[h];//如果此时 h<=r,交换 a[h]和 a[r]
a[h]=a[r];
a[r]=temp;
h++;r--; //这两句必不可少哦
}
}
if(r>x) qsort(x,r);//注意此处,尾指针跑到前半部分了
if(h<y) qsort(h,y); //注意此处,头指针跑到后半部分了
}
调用:qsort(1,n)即可实现数组 a 中元素有序。适用于 n 比较大的排序
二、冒泡排序
void paopao(void) //待排序的数据存放在 a[1]..a[n]数组中
{for(int i=1;i<n;i++) //控制循环(冒泡)的次数,n 个数,需要 n-1 次冒泡
for(int j=1;j<=n-i;j++) //相邻的两两比较
if(a[j]<a[j+1]) {int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
}
或者
void paopao(void) //待排序的数据存放在 a[1]..a[n]数组中
{for(int i=1;i<n;i++) //控制循环(冒泡)的次数,n 个数,需要 n-1 次冒泡
- 1
- 2
前往页