二分查找及基础排序
Posted mtn007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找及基础排序相关的知识,希望对你有一定的参考价值。
1 //冒泡排序 2 void bubbleSorte(int* arr, int len) 3 { 4 for (int i = 0; i < len - 1; i++) 5 { 6 for (int j = 0; j < len - 1 - i; j++) 7 { 8 if (arr[j] > arr[j + 1]) 9 { 10 arr[j] ^= arr[j + 1]; 11 arr[j + 1] ^= arr[j]; 12 arr[j] ^= arr[j + 1]; 13 } 14 } 15 } 16 }
1 //选择排序 2 void selectSorte(int* arr, int len) 3 { 4 for (int i = 0; i < len - 1; i++) 5 { 6 for (int j = i + 1; j < len; j++) 7 { 8 if (arr[i] > arr[j]) 9 { 10 arr[i] ^= arr[j]; 11 arr[j] ^= arr[i]; 12 arr[i] ^= arr[j]; 13 } 14 } 15 } 16 }
1 //插入排序 2 void insertSorte(int* arr, int len) 3 { 4 int i, j, t; 5 for (i = 1; i < len; i++) 6 { 7 t = arr[i]; 8 for (j = i; j - 1 >= 0 && t < arr[j - 1]; j--) 9 { 10 arr[j] = arr[j - 1]; 11 } 12 arr[j] = t; 13 } 14 }
1 //希尔排序 2 void shellSorte(int* arr, int len) 3 { 4 int idx = len / 2; 5 while (idx >= 1) 6 { 7 int i, j, t; 8 for (i = idx; i < len; i++) 9 { 10 t = arr[i]; 11 for (j = i; j - idx >= 0 && t < arr[j - idx]; j -= idx) 12 { 13 arr[j] = arr[j - idx]; 14 } 15 arr[j] = t; 16 } 17 idx /= 2; 18 } 19 }
1 //快速排序 2 void quickSorte(int* arr, int left, int right) 3 { 4 if (left < right) 5 { 6 int low = left; int high = right; 7 int sh = arr[left]; 8 while (low < high) 9 { 10 while (arr[high] > sh&&low < high) 11 { 12 high--; 13 } 14 arr[low] = arr[high]; 15 while (arr[low] < sh&&low < high) 16 { 17 low++; 18 } 19 arr[high] = arr[low]; 20 } 21 arr[low] = sh; 22 quickSorte(arr, left, high - 1); 23 quickSorte(arr, low + 1, right); 24 } 25 }
1 //二分查找 2 int Two_points_search(int* arr, int low, int high, int find) 3 { 4 while (low<=high) 5 { 6 int idx = (low + high) / 2; 7 if (arr[idx] == find) 8 { 9 return idx; 10 } 11 else if (find > arr[idx]) 12 { 13 low = idx + 1; 14 } 15 else 16 { 17 high = idx - 1; 18 } 19 } 20 return -1; 21 }
以上是关于二分查找及基础排序的主要内容,如果未能解决你的问题,请参考以下文章