码迷,mamicode.com
首页 > 编程语言 > 详细

1.起泡排序

时间:2019-06-22 20:08:18      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:void   有序   版本   div   改进   sort   lse   font   循环   

1.1.初始版本

1 void bubble_sort_1(int *arr,int length) {
2     int i, j;
3     for (i = 0; i < length; i++) {
4         for (j = 0; j < length-i-1; j++) {
5             if (arr[j] > arr[j + 1])
6                 std::swap(arr[j], arr[j + 1]);
7         }
8     }
9 }

1.2.改进1:如果在进行循环到了某一步的时候,发现总体已经有序了,则直接结束循环。

 1 void bubble_sort_2(int a[], int n) {
 2      for (bool sorted = false; sorted = !sorted; n--) {
 3          for (int i = 1; i != n; i++) {
 4              if(a[i - 1]> a[i]){
 5              std::swap(a[i - 1], a[i]);
 6              sorted = false;
 7             }
 8          }
 9      }
10  }

1.3.改进2:记录每次最右边的逆序点(该点后半部分已经有序),则可以从该点往左边进行再排序,省去了已经有序再排序的部分步骤。

 1 void bubble_sort_3(int a[], int n) {
 2     int last = 0;
 3     int a_border = n;
 4     for (bool sorted = false; sorted = !sorted; a_border--) {
 5         for (int i = 1; i != a_border; i++) {
 6             if (a[i - 1] > a[i]) {
 7                 std::swap(a[i - 1], a[i]);
 8                 sorted = false;
 9                 last = i;
10             }
11         }
12         a_border = last;
13     }
14 }

 

1.起泡排序

标签:void   有序   版本   div   改进   sort   lse   font   循环   

原文地址:https://www.cnblogs.com/Royzzzzz/p/11070008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!