基本的排序

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

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];
        }
    }
        
}

  

原文地址:https://www.cnblogs.com/zfc888/p/10156239.html