• 常用的四种排序算法


    #include <stdio.h>
    
    void BubbleSort(int a[], int size, int order);
    void SelectSort(int a[], int size, int order);
    void InsertSort(int a[], int size, int order);
    void QuickSort(int a[], int size, int order);
    
    
    int main()
    {
    	int a[5]={5,3,4,2,1};
    	int i;
    	
    	//BubbleSort(a,5,1);
    	//SelectSort(a,5,1);
    	//InsertSort(a,5,1);
    	QuickSort(a,5,1);
    
    	for(i=0;i<5;i++)
    		printf("%d ",a[i]);
    
    	printf("
    ");
    	
    	return 0;
    }
    
    
    void BubbleSort(int a[], int size, int order) //order为1代表升序,冒泡排序算法
    {
    	int i, j;
    	for(i=0;i<size-1;i++)
    	{
    		for(j=0;j<size-i-1;j++)
    		{
    			if((order)?(a[j]>a[j+1]):(a[j]<a[j+1]))
    			{
    				a[j]=a[j]^a[j+1];
    				a[j+1]=a[j]^a[j+1];
    				a[j]=a[j]^a[j+1];
    			}
    		}
    	}	
    }
    
    
    void SelectSort(int a[], int size, int order) //order为1代表升序,选择排序算法
    {
    	int i, j, k;
    	for(i=0;i<size-1;i++)
    	{
    		k=i;
    		for(j=i+1;j<size;j++)
    		{
    			if((order)?(a[k]>a[j]):(a[k]<a[j])) k=j;
    		}
    		
    		if(k!=i)
    		{
    			a[k]=a[k]^a[i];
    			a[i]=a[k]^a[i];
    			a[k]=a[k]^a[i];
    		}
    	}
    }
    
    
    void InsertSort(int a[], int size, int order) //order为1代表升序,插入排序算法
    {
    	int i, j, k;
    	for(i=1;i<size;i++)
    	{
    		k=a[i];
    		j=i-1;
    		while(((order)?(a[j]>k):(a[j]<k)) && j>=0)
    		{
    			a[j+1]=a[j];
    			j--;
    		}
    		a[j+1]=k;
    	}
    }
    
    
    void QuickSort(int a[], int size, int order) //order为1代表升序,快速排序算法
    {
    	int i,j,k;
    	if(size<=1) return;
    
    	i=0;
    	j=size-1;
    	k=a[i];
    
    	while(i!=j)
    	{
    		while(i!=j && ((order)?(a[j]>=k):(a[j]<=k)))
    			j--;
    			a[i]=a[j];
    		while(i!=j && ((order)?(a[i]<=k):(a[i]>=k)))
    			i++;
    			a[j]=a[i];
    	}
    
    		a[i]=k;
    		QuickSort(a,i,1);
    		QuickSort(a+i+1,size-i-1,1);
    
    }
    

      编译环境VC6.0,测试OK。

  • 相关阅读:
    [BZOJ3997][TJOI2015]组合数学(Dilworth定理+DP)
    [BZOJ4000][TJOI2015]棋盘(状压DP+矩阵快速幂)
    BZOJ2462[Beijing2011]矩阵模板(二维Hash)
    [BZOJ2458][BeiJing2011]最小三角形(分治)
    [HDU5354]Bipartite Graph(CDQ分治+并查集)
    [NOIP2017]时间复杂度(模拟)
    [Luogu2540][NOIP2016]斗地主增强版(搜索+DP)
    [Luogu1979][NOIP2013]华容道(BFS+SPFA)
    WQS二分题集
    [CC-XXOR]Chef and Easy Problem
  • 原文地址:https://www.cnblogs.com/huiz/p/7197025.html
Copyright © 2020-2023  润新知