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

    快速排序算法是一种非常高效的内部排序算法,其平均时间复杂度为O(nlogn),且其性能在相同时间复杂度中最好,不过

    在最坏的情况下会退化成冒泡排序,此时时间复杂度为O(n^2)。就平均性能来讲,快速排序是一种非常高效的算法,现在

    介绍一种比较简单的快速排序的实现算法。

    代码如下:

    #include <stdio.h>
    #define  N  10
    int main()
    {
    	void sort(int *a, int left, int right);
    	int a[N];
    	int i;
    	for(i = 0; i < N; i++)
    		scanf("%d", &a[i]);
    
    	sort(a, 0, N-1);     // 缺陷,主函数中调用时,要检查left是否小于right
    	for(i = 0; i < N; i++)
    		printf("%d ", a[i]);
    
    	return 0;
    }
    
    void sort(int *a, int left, int right)
    {
    	if(left < right)   // 当只剩一个数据时返回,即left == right
    	{
    		int key = a[left];
    		int low = left;
    		int high = right;
    		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] = key;
    		sort(a, left, low-1);   // 对左半部分排序
    		sort(a, low+1, right);  // 对右半半部分排序
    	}
    }
    

      

  • 相关阅读:
    软件杯第一阶段
    架构漫谈读后感二
    架构漫谈读后感一
    软件架构实践读后感三
    Refined Architecture阶段读后感
    软件架构实践读后感二
    Excel打开csv文件乱码
    安装机器学习所需的库
    认识Numpy Ndarray对象
    初识pandas
  • 原文地址:https://www.cnblogs.com/wkx12/p/5175379.html
Copyright © 2011-2022 走看看