zoukankan      html  css  js  c++  java
  • 排序算法总结

    1 冒泡排序:

    void BubbleeSort(int*p,int len,SORT_TYPE type = SORT_ASC)
    	{
    		
    		//方式二冒泡:有发生任务数据交互时。说明已经排序好了
    		bool flag = true;
    		int k = len;
    		while (flag)
    		{
    			flag = false;
    			for(int j=0 ; j<k-1 ; j++)
    			{
    				if (p[j] > p[j+1])
    				{
    					swap(p+j,p+j+1);
    					flag = true;
    				}
    			}
    	}

    2、高速排序:

    	void QuickSort(int*a, int nLeft, int nRight)
    	{
    		if(nLeft > nRight) return;
    
    		int temp = a[nLeft];
    		int i = nLeft;
    		int j = nRight;
    
    		while (i < j)
    		{
    			//首先从右边找到一个比temp小的数
    			while(a[j]>=temp && j>i)
    				j--;
    			//从左边边找到一个比temp大的数
    			while(a[i]<=temp && j>i)
    				i++;
    			//交换找到的两个数据
    			//交换两个数在数组中的位置                 
    			swap(a+i,a+j); 
    		}
    		//print(a,10);
    		//终于将基准数归位   
    		swap(a+nLeft,a+i);
    		QuickSort(a,nLeft,i-1);
    		QuickSort(a,i+1,nRight);
    	}

    3、插入排序

              void InsertSort(int*a, int nLeft, int nRight)	{
    		for(int i=1 ; i< len ; i++)
    		{
    			if(a[i] < a[i-1])
    			{
    			 	int j = i-1;
    				int temp = a[i];
    
    				while(temp < a[j])
    				{
    					a[j+1] = a[j];
    					j--;
    				}
    				a[j+1] = temp;
    			}
    			//print(a,len);
    		}
    	}

    4、选择排序

    	void SelectSort(int*a,int len,SORT_TYPE type = SORT_ASC)
    	{
    		for(int i=0; i<len;i++)
    		{
    			int temp = a[i];
    			int index = i;
    			for(int j=i+1; j <len;j++)
    			{
    				if(a[j] < a[index])
    				{
    					index = j;
    				}
    			}
    			swap(a+i,a+index);
    		}
    		//print(a,len);
    	}



     

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    MSBuild、条件编译、预处理命令
    批量数据插入SqlBulkCopy
    WPF 双向绑定
    编程思想之一
    python 提交表单
    python 添加用户
    python 分页
    day9 IO多路复用
    day9 线程、进程和协程深入版
    day8 进程、线程 简介版
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4645025.html
Copyright © 2011-2022 走看看