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

    思路分析:

    1、先从数组里面拿出一个数据(sample),从数组最右边下标(end)开始比较,直到遇到比sample小的数(min)就把min放到sample的位置上

    2、接着从数组最左边下标(begin)开始比较,直到遇到比sample大的数(max),就把max放到前面min的原来的位置上

    3、一直重复步骤1和2,直到begin下标和end下标相等

    4、接着递归分别排序左右两边的数

    代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void quick_sort(int *array,int begin,int end)
    {
        if(begin < end)
        {
          int i=begin,j=end,x;
          x = array[begin];
          while(i < j)
           {
             while( i < j && x <= array[j])
             j--;
             if(i < j)
             array[i++] = array[j];
             while(i < j && x > array[i])
             i++;
             if(i < j)
             array[j++] = array[i];
          }
          array[i] = x; 
          quick_sort(array,begin,i-1);
          quick_sort(array,i+1,end);
        }
    }
    
    
    int main(int argc,char **argv)
    {
        int i = 0;
      int array[10] = {1,2,8,97,45,56,77,11,6,100};
        quick_sort(array,0,9);
        printf("hello
    ");
        for(i=0;i<10;i++)
        {
            printf("%d ",array[i]);
        }
        return 0;
    }
  • 相关阅读:
    java作业总结1
    Java课程学习感想
    java第二阶段作业小结
    java第一阶段作业小结
    Java课程总结
    第二周期作业总结
    第一次作业周期总结
    Java第二阶段作业总结
    Java第一阶段作业总结
    java最后一阶段总结
  • 原文地址:https://www.cnblogs.com/wurenzhong/p/8651989.html
Copyright © 2011-2022 走看看