排名次c++

在C++中,可以使用各種排序算法對數據進行排序。以下是一些常用的排序算法及其在C++中的實現示例:

  1. 冒泡排序(Bubble Sort)

    void bubbleSort(int array[], int size) {
     for (int i = 0; i < size; i++) {
         for (int j = 0; j < size - 1 - i; j++) {
             if (array[j] > array[j + 1]) {
                 swap(array[j], array[j + 1]);
             }
         }
     }
    }
  2. 選擇排序(Selection Sort)

    void selectionSort(int array[], int size) {
     for (int i = 0; i < size - 1; i++) {
         int minIndex = i;
         for (int j = i + 1; j < size; j++) {
             if (array[j] < array[minIndex]) {
                 minIndex = j;
             }
         }
         swap(array[i], array[minIndex]);
     }
    }
  3. 插入排序(Insertion Sort)

    void insertionSort(int array[], int size) {
     for (int i = 1; i < size; i++) {
         int key = array[i];
         int j = i - 1;
         while (j >= 0 && array[j] > key) {
             array[j + 1] = array[j];
             j--;
         }
         array[j + 1] = key;
     }
    }
  4. 快速排序(Quick Sort)

    
    void quickSort(int array[], int low, int high) {
     if (low < high) {
         int pi = partition(array, low, high);
         quickSort(array, low, pi - 1);
         quickSort(array, pi + 1, high);
     }
    }

int partition(int array[], int low, int high) { int pivot = array[high]; int i = (low - 1); for (int j = low; j <= high - 1; j++) { if (array[j] < pivot) { i++; swap(array[i], array[j]); } } swap(array[i + 1], array[high]); return (i + 1); }


5. 歸併排序(Merge Sort)
```cpp
void merge(int array[], int low, int mid, int high) {
    int n1 = mid - low + 1;
    int n2 = high - mid;

    int L[n1], R[n2];

    for (int i = 0; i < n1; i++)
        L[i] = array[low + i];
    for (int j = 0; j < n2; j++)
        R[j] = array[mid + 1 + j];

    int i = 0;
    int j = 0;
    int k = low;
    while (i < n1 && j < n2) {
        if (L[i] <= R[j]) {
            array[k] = L[i];
            i++;
        } else {
            array[k] = R[j];
            j++;
        }
        k++;
    }
    while (i < n1) {
        array[k] = L[i];
        i++;
        k++;
    }
    while (j < n2) {
        array[k] = R[j];
        j++;
        k++;
    }
}

void mergeSort(int array[], int low, int high) {
    if (low < high) {
        int mid = (low + high) / 2;
        mergeSort(array, low, mid);
        mergeSort(array, mid + 1, high);
        merge(array, low, mid, high);
    }
}

以上是一些基本的排序算法的C++實現。在實際套用中,選擇排序算法時需要考慮數據規模、數據特點以及算法的時間複雜度和空間複雜度。例如,快速排序在大多數情況下比冒泡排序更高效,但它的性能受制於分區策略。歸併排序通常在數據已經排序或者接近排序的情況下表現不佳。選擇排序算法時,還需要考慮算法的穩定性、是否原地排序(in-place)等因素。