zoukankan      html  css  js  c++  java
  • 快速排序

    总共大致分为几种,包括选择排序法,冒泡排序法,插入排序法,快速排序法和堆排序。
    其中比较简单的是选择冒泡和插入,比较抽象的就是快排和堆排。这里先讲快排,因为这也是比较常用的算法,包含在algorithm头文件里面。
    关于快排实际上就是分治思想和递归思想的结合。快排的函数是一个递归函数,其中将排序数组分治成为两块。
    每次都分治成为两块,然后将其中的第一个数作为标准值,大的放在标准值的后面,小的放在标准值的前面,最后将中间的数值和标准值交换位置。
    这实际上就是设置一个中间量,交换原数组中比标准值大的数和比标准值小的数的位置的事情,因为标准值是一个虚拟放在中间的数,最后将标准值放置到位。
    还有要利用的是数组的双排思想。什么叫数组的双排思想呢,说的就是数组里面不仅仅是元素,还有它的标号。通过标号来一个一个的寻找比较。
    这个思想解释的比较好的有一个网站,这里罗列下:算法 3:最常用的排序--快速排序
    #include <iostream>
    int a[100],n;
    using namespace std;
    void quicksort(int left,int right);
    int main()
    {
      cin>>n;
      for(int i=0;i<n;i++) {
      cin>>a[i];
    }
    quicksort(0,n-1);
    for(int i=0;i<n;i++) {
      cout<<a[i]<<" ";
    }
    return 0;
    }
    void quicksort(int left,int right)
    {
      int i,j,temp,t;
      if(left<right) {
      return;
    }
    i=left;
    j=right;
    temp=a[left];
    while(i!=j) {
    while(temp>a[j]&&i<j) {
      j--;
    }   
    while(temp<a[i]&&i<j) {   i++; } t=a[j]; a[j]=a[i]; a[i]=t; } a[left]=a[i]; a[i]=temp; quicksort(left,i-1); quicksort(i+1;right); }
  • 相关阅读:
    Restful levels &HATEOAS基本介绍~
    跨源资源共享(CORS)概念、实现(用Spring)、起源介绍
    Ubuntu下math库函数编译时未定义问题的解决
    常用软件清单~
    JetBrains PyCharm 专业版激活
    hello1.java内容简单介绍
    hello1 web项目中web.xml作用分析
    hello2 source analisis(notes)
    Servlet filter
    分析helo1项目中的 Web.xml
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/9297007.html
Copyright © 2011-2022 走看看