冒泡排序:①需要“冒泡”的形式来排序,大气泡向后去|小气泡向前来。
②冒泡,比较(交换)相邻的元素。
一个标识:(注意一下)
冒泡排序的内循环for的j的条件测试是外循环i相关的。
下标越界的避免:
需要比较相邻的元素,因此j与j+1注意越界的避免。
源码:
- void swap(int *a, int *b)
- {
- int *temp;
- *temp = *a;
- *a = *b;
- *b = *temp;
- }
- // note: compare the two number who are adjacent.
- void bubble_sort(int a[], int n)
- {
- for(int i = 0; i < n; i++)
- {
- // compare a[j]&a[j+1], so j must be less than n-1.
- // n-1-i means some numbers at the end of the array are sorted.
- for(int j = 0; j < (n-1)-i; j++)
- {
- // the bigger number is bubbled to right side.
- if(a[j] > a[j+1])
- {
- swap(a[j], a[j+1]);
- }
- }
- output(a, n);
- }
- }
阅读(1802) | 评论(4) | 转发(2) |