• 快速排序


    快排是对冒泡排序的一种改进,是目前认为最好的内排序算法之一。
    核心思想:在当前排序的序列(ks,ks+1,…,kt)中任意选择一个元素作为分界元素或者基准元素,把小于或等于分界元素的所有元素都移到分界元素前面,把大于或等于的所有元素移到分界元素后边。这样,分界元素正好处在排序的最终位置上,并且把当前排序的序列划分成前后两个子序列(前一个子序列中所有元素都小于或等于分界元素,后一个子序列中的元素都大于或等于分界元素)。然后再对上述子序列递归地进行上述过程

    #include <stdio.h>
    #include <string.h>
    int a[] = {49,38,65,97,76,13,27,49};
    void QUICK_SORT(int a[],int l,int r){
    	int i=l,j=r;
    	int key = a[l]; //不能是a[0],子序列开头的元素不一定是a[0]
    	if (i>=j) //缺少该if条件,将进入无限循环
    	{
    		return;
    	}
    	while(i<j){
    		while(a[j]>=key && i<j)
    			j--;   //找到小于key的值,替换他
    		a[i] =a[j];
    
    		while(a[i]<key && i<j)
    			i++;  //原来的j位置上的值已经替换了i位置上的值,目前存在两个j位置上对应的值,用a[i]的值将他替换掉
    		a[j] = a[i];
    	}
    	a[i] = key;
    
    
    	QUICK_SORT(a,l,i-1);
    
    
    
    	QUICK_SORT(a,i+1,r);
    
    	
    	
    
    }
    int main(){
    	
    	int n = (sizeof(a))/sizeof(int); //求数组的长度
    	QUICK_SORT(a,0,n-1);
    
    	for (int i=0;i<n;i++)
    	{
    		if (i==n-1)
    		{
    			printf("%d
    ",a[i]);
    		}else{
    			printf("%d ",a[i]);
    		}
    		
    	}
    	return 0;
    }
    
  • 相关阅读:
    语音识别六十年
    神经网络架构PYTORCH-几个概念
    Ubuntu 16.04 系统无法挂载u盘的问题
    技术的止境
    神经网络架构PYTORCH-宏观分析
    Python中parameters与argument区别
    神经网络架构PYTORCH-初相识(3W)
    【ES】学习9-聚合2
    【ES】学习8-聚合1
    【python】中文提取,判断,分词
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781679.html
Copyright © 2020-2023  润新知