实习之路--点滴积累二_冒泡
写了个快排之后,总得再写点啥,冒泡、插入等的排序都还没写呢,那行,继续。
冒泡排序
原理依旧简单,没事,从简单做起。假设要将数组从小到大排序:
数组 s[] = { 10, 3, 29, 0}
(1)数组中的元素,从头开始,两两之间进行比较 // 10 和 3 比较
(2)然后将小的放前面,大的放后面 // 10 和 3 比较完后,数组 s[] = { 3, 10, 29, 0},紧接着 10 和 29 进行比较
(3)一趟遍历后就会固定一个元素的位置 // 遍历一趟后 s[] = { 3, 10, 0, 29}, 29 的位置固定了
(4)多趟遍历,最终数组就排好序了 // s[] = { 0, 3, 10, 29}
需要注意的是:
(1)执行的趟数为 n - 1 趟
(2)对于循环的变量 j ,j < n - i - 1
代码如下:
1 void Bubble_Sort(long *p, long n) 2 { 3 for (long i = 0; i < n - 1; i++) 4 { 5 for (long j = 0; j < n - i - 1; j++) 6 { 7 if (p[j] > p[j + 1]) 8 { 9 long temp = p[j]; 10 p[j] = p[j + 1]; 11 p[j + 1] = temp; 12 } 13 } 14 } 15 }
测试代码如下:
1 int main() 2 { 3 long s[] = { 10, 3, 29, 0 }; 4 Bubble_Sort(s, 4); 5 for (long i = 0; i < 4; i++) cout << s[i] << ends << ends; 6 return 0; 7 }
运行结果如图: