学习笔记C++排序算法
余亦雾中人排序算法
1、冒泡排序——bubbleSort
冒泡排序是一种简单的比较排序算法。它反复扫描要排序的数组,一次比较相邻的两个元素,如果它们的顺序错误就交换它们。这个过程重复多次,直到整个数组有序。
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   | #include <iostream> using namespace std;
  void bubbleSort(int arr[], int n) {     for (int i = 0; i < n-1; i++) {         for (int j = 0; j < n-i-1; j++) {             if (arr[j] > arr[j+1]) {                                  int temp = arr[j];                 arr[j] = arr[j+1];                 arr[j+1] = temp;             }         }     } }
  int main() {     int arr[] = {64, 34, 25, 12, 22, 11, 90};     int n = sizeof(arr)/sizeof(arr[0]);     bubbleSort(arr, n);     cout << "排序后的数组: ";     for (int i=0; i < n; i++)         cout << arr[i] << " ";     cout << endl;     return 0; }
   | 
 
另:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | int a[101] int main(){ 	int n; 	cin>>n; 	for(int i = 0; i<n; i++)cin>>a[i]; 	for(iny j = n-1;j > 0; j--){ 		for (int i = 0; i<j; i++){ 			if(a[i]>a[i+1]){ 				swap(a[i],a[i+1]) 			} 		} 	} 	for (int i=0; i < n; i++)         cout << arr[i] << " ";     cout << endl;     return 0; }
   | 
 
2、选择排序——selectionSort
选择排序是一种简单而直观的排序算法。它的工作原理是每次从未排序的部分中选出最小的元素,并将其放在已排序部分的末尾。
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   | #include <iostream> using namespace std;
  void selectionSort(int arr[], int n) {     for (int i = 0; i < n-1; i++) {         int min_idx = i;         for (int j = i+1; j < n; j++)             if (arr[j] < arr[min_idx])                 min_idx = j;                  int temp = arr[min_idx];         arr[min_idx] = arr[i];         arr[i] = temp;     } }
  int main() {     int arr[] = {64, 25, 12, 22, 11};     int n = sizeof(arr)/sizeof(arr[0]);     selectionSort(arr, n);     cout << "排序后的数组: ";     for (int i=0; i < n; i++)         cout << arr[i] << " ";     cout << endl;     return 0; }
   | 
 
3、插入排序——insertionSort
插入排序是通过构建有序序列来进行排序的,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   | #include <iostream> using namespace std;
  void insertionSort(int arr[], int n) {     for (int i = 1; i < n; i++) {         int key = arr[i];         int j = i - 1;                  while (j >= 0 && arr[j] > key) {             arr[j + 1] = arr[j];             j = j - 1;         }         arr[j + 1] = key;     } }
  int main() {     int arr[] = {12, 11, 13, 5, 6};     int n = sizeof(arr)/sizeof(arr[0]);     insertionSort(arr, n);     cout << "排序后的数组: ";     for (int i = 0; i < n; i++)         cout << arr[i] << " ";     cout << endl;     return 0; }
   |