码迷,mamicode.com
首页 > 其他好文 > 详细

排序算法

时间:2014-08-14 23:27:26      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   for   ar   art   

1、冒泡排序

bubuko.com,布布扣
1 /*
2  * 冒泡排序
3  */
4 void BubbleSort(int *arr, int left, int right)
5 {
6     for(int i = left; i < right; ++i) 
7         for(int j = right; j > i; --j) 
8             GreatExchange(arr[j-1], arr[j]);        // 发现逆序就进行交换
9 }
View Code

 

2、插入排序

bubuko.com,布布扣
 1 /*
 2  * 插入排序
 3  */
 4 void InsertSort (int *arr, int left, int right)
 5 {
 6     for (int i = right - 1; i > left; --i) 
 7         if(arr[j-1] > arr[j])
 8             Exchange(arr[j-1], arr[j]);               // 序列最小元素放到第一位
 9     for (int i = left + 2; i < right; ++i) {
10         int j = i;
11         int temp = arr[i];                            // 保存待插入元素
12         while (temp < arr[j-1]) {                     // 不是插入位置
13             arr[j] = arr[j-1];                        // 元素向后移动
14             --j;
15         }
16         arr[j] = temp;                                // 插入元素
17     }
18 }
19 
20 /*
21  * 折半插入排序
22  */
23 void  BinaryInsertSort(int *arr, int left, int right)
24 {
25     for (int i = left + 1; i < right; ++i) {
26         int temp = arr[i];
27         int l = left, r = i - 1;                        // 查找范围
28         while (l <= r) {                                // 折半查找
29             int mid = (l + r) / 2;                      // 中间位置
30             if(temp < arr[mid])
31                 r = mid - 1;                            // 向左缩小区间
32             else
33                 l = mid + 1;                            // 否则,向右缩小区间
34         }
35         for (int j = i - 1; j >= l; --j)
36             arr[j+1] = arr[j];                          // 成块移动,空出插入位置
37         arr[l] = temp;                                  // 插入
38     }    
39 }
View Code

  

公共函数

bubuko.com,布布扣
 1 tempplate <class T>
 2 void Exchange(T &elem_1, T &elem_2)
 3 {
 4     T temp = 0;
 5     temp = elem_1;
 6     elem_1 = elem_2;
 7     elem_2 = temp;
 8 }
 9 
10 // 若elem_1大于elem_2,则交换
11 void GreatExchange(T &elem_1, T &elem_2)
12 {
13     if(elem_1 > elem_2)
14         Exchange(elem_1, elem_2);
15 }
View Code

  

OK哒,O(∩_∩)O哈哈~

排序算法,布布扣,bubuko.com

排序算法

标签:style   blog   http   color   os   for   ar   art   

原文地址:http://www.cnblogs.com/gotodsp/p/3913540.html

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