Daily Diaries Of CTK

.

Thứ Năm, 25 tháng 2, 2016

Code QuickSort



#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
using namespace std;
// hoan doi vi tri giua hai phan tu
void swap(int &a, int &b) {
int tmp = a;
a = b;
b = tmp;
}

// ham tim phan tu trong mang lam phan tu chot
void partition(int A[], int left, int right) {
if (A == NULL)
return;
int x = (A[left] + A[right]) / 2; // chon phan tu giua lam chot
int i = left; // gan bien chay i tu ben trai
int j = right; // gan bien chay j tu ben phai
if (left > right)
return; // neu phan tu trai > phai thi thoat khoi ham
else {
do {
while ((i <= j) && (x > A[i]))
i++; // vong lap ket thuc khi i>j hoac phan tu trai > chot
while ((i <= j) && (x < A[j]))
j--; // vong lap ket thuc khi i>j hoac phan tu phai < chot
if (i <= j) {
swap (A[i], A[j]); // hoan doi vi tri giua hai phan tu o tren
i++; // tiep tuc kiem tra cho i++
j--; // tiep tuc kiem tra cho j--;
}
} while (i <= j);
}
partition(A, left, j);
partition(A, i, right);
return;
}
// su dung quick Sort de sap xep
void quickSort(int A[], int &n) {
partition(A, 0, n - 1);
//return;
}
// ham main
int main() {
int *A, n;
A = new int[100];
cout << "Nhap vao so phan tu cua mang: ";
cin >> n;
for (int i = 0; i < n; i++) {
cout << "Phan tu thu " << (i + 1) << ": ";
cin >> *(A + i);
}
quickSort(A, n);
for (int i = 0; i < n; i++) {
cout << "\t" << *(A + i);
}
return 0;
}

0 nhận xét:

Đăng nhận xét