• 快速排序


    快速排序(Quicksort):是对冒泡排序的一种改进。

    基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分要小。

    然后再按此方法对两部分分别进行排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

    注:快速排序时一种不稳定的排序。

    过程:

    <1>设有数组a[0]……a[n-1],首先任选一个数(一般选第一个数)作为关键数据,然后把所有比它小的放在前边,比它大的放在后面。设i=0;j=n-1;key=a[0];

    <2>从j开始向前搜索,直到找到一个小于key的值,交换位置。(a[i],a[j])

    <3>从i开始向后搜索,直到找到一个大于key的值,交换位置。(a[i],a[j])

    <4>重复2,3的,直到i=j;

    代码如下:

    #include "stdio.h"
    
    void main()
    {
      int i;
      int a[]={6,5,4,3,2,1,7,8,9};
        void quickSort(int a[],int start,int end); /* 对函数的声明*/
        quickSort(a,0,8);
           for(i=0;i<9;i++)
        printf("%d
    ",a[i]);
        getchar();
        printf("hello what are you doing.");
    }
        void quickSort (int a[],int start,int end)
      {
        int temp;
        int i=start;
        int j=end;
        int key=a[i];
        while(i<j)
        {
          while(i<j&&key<=a[j])/*找到第一个小于key的值*/
               { j--;  }
           if(i<j)
          {                            /*交换i,j的值*/
             temp=a[i];
             a[i]=a[j];
             a[j]=temp;
          }
        while(i<j&&key>=a[i])
            {i++;}
            if(i<j)
            {
              temp=a[i];
              a[i]=a[j];
              a[j]=temp;
              }
        }
    
        if(i-start>1) quickSort(a,start,i-1);
        if(end-i>1) quickSort(a,i+1,end);
      }
  • 相关阅读:
    关于垂直居中
    linux 前后台程序切换
    mac 下jetbrains IDE系列IDE主题
    mac 安装命令行开发者工具
    python 安装MySQLdb mysql_config not fount
    error: command 'cc' failed with exit status 1
    sqllite 入门
    jieba分词
    zookeeper 故障重连机制
    深入学习 celery
  • 原文地址:https://www.cnblogs.com/hzko5114/p/3504129.html
Copyright © 2020-2023  润新知