• 快速排序



    #include <stdio.h>

    int partition(int A[], int p, int q) {
    int x = A[p];
    int i = p;
    int j;
    for (j=p+1; j<=q; j++) {
    if (A[j]<=x) {
    i++;
    int temp = A[i];
    A[i] = A[j];
    A[j] = temp;
    }
    }
    int temp = A[p];
    A[p] = A[i];
    A[i] = temp;
    return i;
    }

    void quickSort(int A[], int L, int R) {
    if (L <= R) {
    int mid = partition(A, L, R);
    quickSort(A, L, mid-1);
    quickSort(A, mid+1, R);
    }
    }

    int main() {
    int A[5] = {3, 6, 8, 2, 1};
    quickSort(A, 0, 4);
    int i;
    for (i=0; i<5; i++) {
    printf("%d ", A[i]);
    }
    return 0;
    }


      


    *************************************************************************************8

    #include <stdio.h>
    int quick_sort(int a[], int low, int high)//一趟排序找出并确定枢轴位置
    {
    int key = 0;
    a[0]= a[low];
    key = a[low];
    while (low < high)
    {
    while (low < high && a[high] >= key) high--;
    a[low] = a[high];
    while (low < high && a[low] <= key) low++;
    a[high] = a[low];
    }
    a[low] = a[0];
    return low;
    }
    void qsort(int a[], int low, int high)//递归进行排序,每次确定每部分的枢轴未知直到该部分只剩下一个元素为止
    {
    int key = 0;
    if (low < high)
    {
    key = quick_sort(a, low, high);
    qsort(a, low, key-1);
    qsort(a, key+1, high);
    }
    }
    void Quicksort(int a[])
    {
    qsort(a,1,7);
    }

    int main()
    {
    int a[8] = {0, 23, 27, 45, 98, 65, 17, 78};
    int i = 0;
    for (i = 1; i < 8; i++) //排序前

    printf("%4d", a[i]);

    printf(" ");
    Quicksort(a);//调用排序函数
    for (i = 1; i < 8; i++) //排序后

    printf("%4d", a[i]);

    printf(" ");
    }


    ***********************************************************************************


    #include <stdio.h>
    int quick_sort(int a[], int low, int high)//一趟排序找出并确定枢轴位置
    {
    int key = 0;
    a[0]= a[low];
    key = a[low];
    while (low < high)
    {
    while (low < high && a[high] >= key) high--;
    a[low] = a[high];
    while (low < high && a[low] <= key) low++;
    a[high] = a[low];
    }
    a[low] = a[0];
    return low;
    }
    void qsort(int a[], int low, int high)//递归进行排序,每次确定每部分的枢轴未知直到该部分只剩下一个元素为止
    {
    int key = 0;
    if (low < high)
    {
    key = quick_sort(a, low, high);
    qsort(a, low, key-1);
    qsort(a, key+1, high);
    }
    }
    void Quicksort(int a[])
    {
    qsort(a,1,7);
    }

    int main()
    {
    int a[8] = {0, 23, 27, 45, 98, 65, 17, 78};
    int i = 0;
    for (i = 1; i < 8; i++) //排序前
    {
    printf("%4d", a[i]);
    }
    printf(" ");
    Quicksort(a);//调用排序函数
    for (i = 1; i < 8; i++) //排序后
    {
    printf("%4d", a[i]);
    }
    printf(" ");
    }


      

    *****************************

    //请问qsort排序怎么写啊?

    #include <stdio.h>
    #include<stdlib.h>
    int comp(const void *a,const void *b)
    {
    return *(int *)a-*(int *)b;
    }
    int main()
    {
    int i,n,a[20];

    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    qsort(a,n,sizeof(int),comp);
    for(i=0;i<n;i++)
    printf("%d ",a[i]);
    return 0;

    }


      

  • 相关阅读:
    360天擎安装上之后,手机开热点之后就没有办法连接
    Redis基本数据类型--Hash(哈希)
    Redis基本数据类型--Set
    redis的五种基本数据类型之List
    Redis的五种基本数据类型 String
    Android应用程序的安装位置
    Java中long和Long有什么区别(转)
    Logcat打印调试信息
    Java GUI图形界面开发工具
    CSDN精选Android开发博客
  • 原文地址:https://www.cnblogs.com/2014acm/p/3893231.html
Copyright © 2020-2023  润新知