快速排序

来源:互联网 发布:授权回调域名出错 编辑:程序博客网 时间:2024/05/17 10:28

【快速排序】

【算法】

分治法

【时间复杂度】

nlogn

【代码】

#include <stdio.h>#include <stdlib.h>//挖坑填数void QuickSort1(int a[], int left, int right){if(left < right){int i, j;int tmp;tmp = a[left];i = left;j = right;while(i < j){while( i < j && a[j] > tmp)j--;if(i < j)a[i++] = a[j];while( i < j && a[i] < tmp)i++;if(i < j)a[j--] = a[i];}if(i == j)a[i] = tmp;QuickSort1(a, left, i - 1);QuickSort1(a, i + 1, right);}}void swap(int *a, int *b){int tmp;tmp = *a;*a = *b;*b = tmp;}//void QuickSort2(int a[], int left, int right){if(left < right){int i, j;int tmp;i = left;j = left - 1;tmp = a[right];while(i < right){while(a[i] > tmp)i++;if(i < right){j++;swap(&a[j], &a[i]);}i++;}swap(&a[j + 1], &a[right]);QuickSort2(a, left, j);QuickSort2(a, j + 2, right);}}int main(void){int a[7] = {5, 6, 1, 4, 9, 3, 7};QuickSort2(a, 0, 6);for(int i = 0; i < 7; i++)printf("%d ", a[i]);printf("\n");return 0;}


0 0