#include <iostream> using namespace std; // 冒泡排序 void bubbleSort (int data[], size_t size) { for (size_t i = 0; i < size - 1; i++) { bool ordered = true; for (size_t j = 0; j < size - 1 - i; j++) if (data[j+1] < data[j]) { int temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; ordered = false; } if (ordered) break; } } // 插入排序 void insertSort (int data[], size_t size) { for (size_t i = 1; i < size; i++) { int temp = data[i]; size_t j; for (j = i; j > 0 && temp < data[j-1]; j--) data[j] = data[j-1]; if (j != i) data[j] = temp; } } // 选择排序 void selectSort (int data[], size_t size) { for (size_t i = 0; i < size - 1; i++) { size_t min = i; for (size_t j = i + 1; j < size; j++) if (data[j] < data[min]) min = j; if (min != i) { int temp = data[i]; data[i] = data[min]; data[min] = temp; } } } // 快速排序 void quickSort (int data[], size_t l, size_t r) { size_t p = (l + r) / 2; int pivot = data[p]; for (size_t i = l, j = r; i < j;) { while (! (i >= p || pivot < data[i])) i++; if (i < p) { data[p] = data[i]; p = i; } while (! (j <= p || data[j] < pivot)) j--; if (j > p) { data[p] = data[j]; p = j; } } data[p] = pivot; if (p - l > 1) quickSort (data, l, p - 1); if (r - p > 1) quickSort (data, p + 1, r); } int main (void) { int data[] = {13,23,20,12,15,31,19,26,24,37}; size_t size = sizeof (data) / sizeof (data[0]); // bubbleSort (data, size); // insertSort (data, size); // selectSort (data, size); quickSort (data, 0, size - 1); for (size_t i = 0; i < size; i++) cout << data[i] << ' '; cout << endl; return 0; } |
|