- 冒泡排序原理:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
- 改进冒泡排序思想:
- 传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值
- 我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半。
class BubbleSort
{
//冒泡排序
public void Sort(int[] arr) {
for (int i=0;i<arr.Length-1;i++) {
for (int j=0;j<arr.Length-1-i;j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//改进冒泡排序
public void GaiJSort(int[] arr) {
int low = 0;
int high = arr.Length - 1;
while (low < high) {
for (int i = low; i < high; i++) {
if (arr[i] > arr[i + 1])
{
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
high--;
for (int j=high;j>low;j--) {
if (arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
low++;
}
}
}