学习中。。。
#include <iostream>
#define SIZE 10
using namespace std;
void print(int arr[], int n){
for (int i = 0; i < n; i++)
cout << arr[i] << ' ';
cout << endl << endl;
}
void Swap(int &a, int &b){
a += b;
b = a - b;
a -= b;
}
void bubbleSort(int arr[], int n){
for (int i = 0; i < n - 1; i++){
int exchange = 0;
for (int j = 0; j < n - 1; j++)
if (arr[j] > arr[j + 1]){
Swap(arr[j], arr[j + 1]);
exchange++;
}
if (exchange == 0)
break;
}
}
void heapSwap(int arr[],int root,int n){
int left = 2 * root + 1;
int right = 2 * (root + 1);
if (right <= n){
int min = arr[left] < arr[right] ? left : right;
if (arr[root] > arr[min])
Swap(arr[root], arr[min]);
}
else if (left <= n)
if (arr[root] > arr[left])
Swap(arr[root], arr[left]);
}
void heapAdjust(int arr[], int root, int n){
heapSwap(arr, root, n);
int left = root * 2 + 1;
int right = root * 2 + 2;
if (left <= n)
heapAdjust(arr, left, n);
if (right <= n)
heapAdjust(arr, right, n);
heapSwap(arr, root, n);
}
void heapSort(int arr[], int n){
for (int i= n-1; i >0; i--){
heapAdjust(arr, 0, i);
Swap(arr[i], arr[0]);
}
}
void selectionSort(int arr[], int n){
for (int i = 0; i < n; i++){
int min = i;
for (int j = i; j < n-1; j++){
if (arr[j + 1]<arr[j])
min = j + 1;
if (min != i)
Swap(arr[min], arr[i]);
}
}
}
void insertionSort(int arr[], int n){
for (int i = 1; i < n; i++){
int tmp = arr[i];
int j = 0;
for (j = i - 1; j >= 0; j--)
if (arr[j] < tmp)
arr[j + 1] = arr[j];
arr[++j] = tmp;
}
}
void quickSort(int arr[], int n, int l, int r){
if (l > r)
return;
int i = l, j = r, key = arr[i];
while (i < j){
while (i<j&&arr[j]>=key)
j--;
if (i < j){
arr[i] = arr[j];
i++;
}
while (i < j&&arr[i] < key)
i++;
if (i < j){
arr[j] = arr[i];
j--;
}
arr[i] = key;
quickSort(arr, n, l,i-1);
quickSort(arr, n, i+1, r);
}
}
int main(){
int arr1[SIZE] = { 1, 2, 3, 5, 6, 4, 7, 9, 8, 0 };
int arr2[SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
cout << "源数组:" << endl;
print(arr1, SIZE);
bubbleSort(arr1, SIZE);
cout << "冒泡排序:升序" << endl;
print(arr1, SIZE);
cout << "堆排序:降序" << endl;
heapSort(arr1, SIZE);
print(arr1, SIZE);
cout << "选择排序:升序" << endl;
selectionSort(arr1, SIZE);
print(arr1, SIZE);
cout << "插入排序:降序" << endl;
insertionSort(arr1, SIZE);
print(arr1, SIZE);
cout << "快速排序:升序" << endl;
quickSort(arr1, SIZE, 0, SIZE-1);
print(arr1, SIZE);
system("pause");
return 0;
}