| //开始遍历过程,以下标j构成子表,共有n-1个子表 for (j=n-1;j>=0;j--) //j从后往前收缩n-1~0,以构成子表0~n-1,0~n-2,0~n-3..0~1 { exchanged=false; for (i=0;i<j;i++) //遍历子表范围0~j { if (arr[i]>arr[i+1]) { temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; exchanged=true; } } if (!exchanged) return n-j-1;//如果在一次遍历中没有发生交换,则表示已经 //排序好,中断遍历过程 } return n-1-j; } |
//冒泡法排序一般算法函数bubbleSortEx()的实现
| template <typename T> int bubbleSortEx(T arr[],int n) { int i,pass; //用于遍历子表的下标 T temp; //用于交换元素的临时变量 //开始遍历过程,以下标j构成子表,共有n-1个子表 for (pass=0;pass<n;pass++) //pass从后往后扩大0~n-1,以构成子表0~n-1,0~n-2,0~n-3..0~1 { for (i=0;i<n-pass;i++) //遍历子表范围0~n-pass { if (arr[i]>arr[i+1]) { temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } } return pass; } |
|