标签:
#include<stdio.h> //bubble sort void BubbleSort(int A[], int n) { int i, j, tmp, flag = 1; j = n - 1; while (flag) { flag = 0; for (i = 0; i < j; i++) { if (A[i] > A[i + 1]) { tmp = A[i]; A[i] = A[i + 1]; A[i + 1] = tmp; flag = 1; } } j = i; } } //insert sort void InsertSort(int A[], int n) { int i, j, tmp; for (i = 1; i < n; i++) { tmp = A[i]; if (A[i] < A[i - 1]) { for (j = i - 1; j >= 0; j--) { if (A[j] <= tmp) { A[j + 1] = tmp; break; } else A[j + 1] = A[j]; } if (j < 0) A[0] = tmp; } } } //shell sort void ShellSort (int A[], int n) { int gap = n / 2; int i, j, k, tmp; while (gap > 0) { for (k = 0; k < gap; k++) { for (i = k; i < n; i += gap) { tmp = A[i]; if (A[i] < A[i - gap]) { for (j = i - gap; j >= 0; j = j - gap) { if (A[j] <= tmp) { A[j + gap] = tmp; break; } else A[j + gap] = A[j]; } if (j < 0) A[j + gap] = tmp; } } gap = gap / 2; } } } //Merge sort void merge (int A[], int low, int mid, int high, int tmp[]) { int i, j, k; for (k = 0, i = low, j = mid + 1; i <= mid && j <=high; k++) { if (A[i] < A[j]) { tmp[k] = A[i]; i++; } else { tmp[k] = A[j]; j++; } } while (i <= mid) { tmp[k] = A[i++]; k++; } while (j <= high) { tmp[k] = A[j++]; k++; } for (i = low, k = 0; i <= high; i++, k++) A[i] = tmp[k]; } void MergeSort (int A[], int low, int high, int tmp[]) { if (low < high) { int mid = (low + high) / 2; MergeSort(A, low, mid, tmp); MergeSort(A, mid + 1, high, tmp); merge(A, low, mid, high ,tmp); } } //quick sort void QuickSort(int A[], int l, int h) { if (l < h) { int low = l, high = h, tmp = A[low]; while (low < high) { while (low < high && A[high] >= tmp) { high--; } A[low] = A[high]; while (low < high && A[low] <= tmp) { low++; } A[high] = A[low]; } A[low] = tmp; QuickSort(A, l, low); QuickSort(A, low + 1, h); } } void main() { int A[100], B[100], C[100], D[100], E[100]; int n, i = 0, data; scanf("%d", &data); while (data != -1) { A[i] = B[i] = C[i] = D[i] = E[i] = data; i++; scanf("%d", &data); } n = i; int tmp[n]; for (i = 0; i < n; i++) printf("%d ", A[i]); printf("\nBubbleSort:"); BubbleSort(A, n); for (i = 0; i < n; i++) printf("%d ", A[i]); printf("\nInsertSort:"); InsertSort(B, n); for (i = 0; i < n; i++) printf("%d ", B[i]); printf("\nShellSort:"); InsertSort(C, n); for (i = 0; i < n; i++) printf("%d ", C[i]); printf("\nMergeSort:"); MergeSort(D, 0, n - 1, tmp); for (i = 0; i < n; i++) printf("%d ", D[i]); printf("\nQuickSort:"); QuickSort(E, 0, n - 1); for (i = 0; i < n; i++) printf("%d ", E[i]); printf("\n"); }
标签:
原文地址:http://blog.csdn.net/uj_mosquito/article/details/42501235