快速排序,冒泡排序

冒泡:ios

#include<iostream>
#include<stdio.h>
using namespace std;

void sort(int* arr, int n) {
    int length;
    int i, j;
    int temp;

    length = n;
    for (i = 0; i < length; i++) {
        for (j = 0; j < length - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}


int main() {
    int n;

    int i = 0;

    int arr[100];

    cout << "輸入數組元素個數:" << endl;
    
    cin >> n;

    cout << "\n輸入數組:" << endl;

    for (i = 0; i < n; i++) {

        cin >> arr[i];

    }

    cout << "\n輸入的數組爲:" << endl;

    for (i = 0; i < n; i++) {

        cout << arr[i] << " , ";

    }



    sort(arr, n);



    cout << "\n冒泡結果爲:" << endl;

    for (i = 0; i < n; i++) {

        cout << arr[i] << " , ";

    }
}

快排:數組

#include<iostream>

#include<stdio.h>

#include<stdlib.h>

using namespace std;



int quicksort(int *arr, int left, int right) {

    int mid;



    mid = arr[left];

    while (left < right) {

        //從右邊開始

        while(left<right && arr[right]>mid)

            right--;

        arr[left] = arr[right];



        while(left < right && arr[left] < mid)

            left++;

        arr[right] = arr[left];

    }



    //此時left等於right

    arr[left] = mid;

    return left;

}



void sort(int *arr, int left, int right) {

    int pivot;



    pivot = arr[left];

    if (left < right) {

        pivot = quicksort(arr, left, right);  //選出支點

        sort(arr, left, pivot - 1);           //負責支點左邊的快排

        sort(arr, pivot + 1, right);          //負責支點右邊的快排

    }

//等到全部排序的left=right了,就會跳出 }
int main() { int n; int i = 0; int arr[100]; cout << "輸入數組元素個數:" << endl; cin >> n; cout << "\n輸入數組:" << endl; for (i = 0; i < n; i++) { cin >> arr[i]; } cout << "\n輸入的數組爲:" << endl; for (i = 0; i < n; i++) { cout << arr[i] << " , "; } sort(arr, 0, n - 1); cout << "快排結果爲:" << endl; for (i = 0; i < n; i++) { cout << arr[i] << " , "; } }
相關文章
相關標籤/搜索