zoukankan      html  css  js  c++  java
  • 基本的排序

    下面我写了几种排序,还不全,有一些是学习其他博客的。大神那么多,奋起直追吧。还有就是不断的进行复习,熟练的掌握知识。

    1 .c++排序调用

    #include<algorithm>
    bool cmp(int a,int b){
        return a>b;
    }
    sort(a,n)//从小到大排序
    sort(a,n,cmp)//从到到小排序

    2.快速排序

    int partition(int *l,int low,int high) {
    	int temp=l[low];
    	
    	while (low <high) {
    		while (low<high&&l[high] >= temp) {
    			high--;
    		}
    		l[low] = l[high];
    		while (low<high&&l[low] <= temp) {
    			low++;
    		}
    		l[high] = l[low];
    
    	}
    	l[low] = temp;
    	return low;
    
    
    }
    void quicksort(int *l, int low, int high) {
    	int p;
    	if(low<high){
    		p = partition(l,low,high);
    		quicksort(l, low, p - 1);
    		quicksort(l, p + 1, high);
    	}
    }
    

    3.归并排序

    #define INF 0x3f3f3f3f
    void merge(int a[],int l,int mid,int r){
        int size1=mid-l+1;
        int size2=r-mid;
        int L[size1+1],R[size2+1];
        for(int i=0;i<size1;i++)
           { L[i]=a[l+i];}
    	for(int i=0;i<size2;i++)
    	{	R[i]=a[1+mid+i];}
    	L[size1]=INF;
    	R[size2]=INF;
    	int left=0,right=0;
        for(int k=l;k<=r;k++){
            if(L[left]<=R[right]){
    			a[k]=L[left];
    			left++;
    			
    		}else{
    			a[k]=R[right];
    			right++;
    		}
        }
        
    }
    void mergesort(int a[],int l,int r){
    	if(l<r){
    		int mid=(l+r)/2;
    		mergesort(a,l,mid);
    		mergesort(a,mid+1,r);
    		merge(a,l,mid,r);
    	}
    }
    

    4.插入排序

    void insertsort(int a[],int size){
        for(int i=1;i<size;i++){
                int temp=a[i];
                int j=i-1;
           while(j>=0&&temp<a[j]){
            a[j+1]=a[j];
            j--;
           }
           a[j+1]=temp;
        }
    
    }
    

    5. 冒泡排序

    void bubblesort(int a[],int size){
        int temp;
        for(int i=0;i<size;i++){
            for(int j=0;j<size-i-1;j++){
                if(a[j]>a[j+1]){
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        
    }
    

    6.选择排序

    void selectsort(int a[],int size){
       
        for(int i=0;i<size-1;i++){
            int minindex=i;
            for(int j=i+1;j<size-1;j++){
                if(a[j]<a[minindex]){
                    minindex=j;
                }
                
            }
            if(a[i]>a[minindex]){
                int temp=a[i];
                a[i]=a[minindex];
                a[minindex]=a[i];
            }
        }
            
    }
    

      

  • 相关阅读:
    Codeforces Round #614 (Div. 2) D. Aroma's Search
    Codeforces Round #614 (Div. 2) C. NEKO's Maze Game
    Kruskal最小生成树及应用
    Codeforces Round #608 (Div. 2) E. Common Number
    Codeforces Round #607 (Div. 2) D Beingawesomeism
    codeforce Hello 2020 A~E
    Codeforces Round #609 (Div. 2)
    Codeforces Round #607 (Div. 2) C. Cut and Paste
    Codeforces Round #605 (Div. 3) F. Two Bracket Sequences 三维dp
    2019-2020Nowcoder Girl初赛题解
  • 原文地址:https://www.cnblogs.com/zfc888/p/10156239.html
Copyright © 2011-2022 走看看