Hsue66 / Algo

0 stars 0 forks source link

sort #14

Open Hsue66 opened 4 years ago

Hsue66 commented 4 years ago

/*#include using namespace std;

define swap(a,b) a^=b^=a^=b

int buf[10];

void mergesort(int *p, int len) { if (len < 2) return; int i, j, k, mid; i = k = 0; j = mid = len / 2;

mergesort(p, mid);
mergesort(p + mid, len - mid);

while (i < mid && j < len) {
    if (p[i] < p[j])
        buf[k++] = p[i++];
    else
        buf[k++] = p[j++];
}
while (i < mid)
    buf[k++] = p[i++];
while (j < len)
    buf[k++] = p[j++];

for (int i = 0; i < len; i++)
    p[i] = buf[i];

}

void qsort(int *p, int left, int right) { if (left >= right) return; int l = left - 1; int r = right + 1; int mid = p[(l + r) / 2];

while (1) {
    while (p[++l] < mid);
    while (p[--r] > mid);
    if (l >= r)
        break;
    if (p[l] > p[r]) {
        int temp = p[l];
        p[l] = p[r];
        p[r] = temp;
    }
}

qsort(p, left, l - 1);
qsort(p, r + 1, right);

}

void isort(int *p, int len) { for (int i = 1; i < len; i++) { for (int j = i; j > 0 && p[j] < p[j - 1]; j--) { int temp = p[j]; p[j] = p[j - 1]; p[j - 1] = temp; } } }

void show(int *arr) { for (int i = 0; i < 10; i++) cout << arr[i] << " "; cout << endl; }

int main() { int arr[10] = { 3,6,2,1,7,9,4,8,0,5 }; show(arr); //mergesort(arr, 10); //qsort(arr, 0, 9); isort(arr, 10); show(arr);

}*/