标签:style blog http color os for ar art
1、冒泡排序
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 }
2、插入排序
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 }
公共函数
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 }
OK哒,O(∩_∩)O哈哈~
标签:style blog http color os for ar art
原文地址:http://www.cnblogs.com/gotodsp/p/3913540.html