- /*
- *冒泡排序
- *依次比较相邻的两个数,将小数放在前面,大数放在后面
- *直至完成排序
- */
- int sort(int *istr,int len)
- {
- int tmp;
- for (int i = 0;i<len;i++)
- {
- for(int j = len-1;j>i;j--)
- {
- if(istr[j]<istr[j-1]) //比较,交换
- {
- tmp=istr[j];
- istr[j]=istr[j-1];
- istr[j-1]=tmp;
- }
- }
- }
- return 0;
- }
- /*
- *快速排序,递归
- *该方法的基本思想是:
- *先从数列中取出一个数作为基准数。
- *分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
- *再对左右区间重复第二步,直到各区间只有一个数。
- */
- void quiksort(int *arry,int low,int high)
- {
- if (low>=high)
- {
- return;
- }
- int l=low,r=high;
- int tmp=arry[low]; //取基数
- while (l<r)
- {
- while (r>l&&arry[r]>tmp) //从右向左比较,查找右边有没有比基数小的数,如果没有,直到r=l终止循环
- {
- r--;
- }
- if (l<r) //交换位置
- {
- arry[l++]=arry[r];
- }
- while (l<r&&arry[l]<tmp)
- {
- l++;
- }
- if (l<r)
- {
- arry[r--]=arry[l];
- }
- }
- arry[l]=tmp; //将基数放回去
- quiksort(arry,low,l-1);
- quiksort(arry,r+1,high);
- return ;
- }