各类排序算法

快速排序

void quickSort(int data[],int low,int high)
{
    int i,j,pivokey;
    if(low<high)
    {
        i=low;
        j=high;
        pivokey=data[i];
        while(i<j)
        {
            while(i<j&&pivokey<=data[j])
                j--;
            if(i<j)
                data[i++]=data[j];
            while(i<j&&pivokey>=data[i])
                i++;
            if(i<j)
                data[j--]=data[i];
        }
    data[i]=pivokey;
    quickSort(data,low,i-1);
    quickSort(data,i+1,high);
    }
}

简单排序算法

void selectSort(int a[],int n)
{
    int k,temp;
    for(int i=0;i<n;i++)
    {
        k=i;
        for(int j=i;j<n;j++)
        {
            if(a[k]>a[j])
            {
            k=j;
            }
        }
        if(a[k]!=a[i])
        {
            temp=a[k];
            a[k]=a[i];
            a[i]=temp;
        }
    }
}

冒泡法:

void maoPao(int a[],int num)//num元素个数
{
    for(int i=0;i<num;i++)
        for(int j=0;j<num-i-1;j++)
        {
            int temp;
            if(a[j]>a[j+1])
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
}

归并排序:

#include "stdafx.h" #include<iostream> using namespace std; void Merge(int a[],int left,int mid,int right) //合并[left,mid]和[mid+1,right] { int i,j,k=0; i=left; //i为第一路的下标 j=mid+1; //j为第二路的下标 int *temp=new int[right-left+1]; while(i<=mid&&j<=right) temp[k++]=(a[i]<=a[j])?a[i++]:a[j++]; //依次合并2路到temp数组 while(i<=mid) temp[k++]=a[i++]; while(j<=right) temp[k++]=a[j++]; for(i=left,j=0;i<=right;++i,++j) //合并完数据写回v数组 a[i]=temp[j]; delete []temp; } void MergeSort(int a[],int p,int r) { if(r>p) { int q=(p+r)/2; MergeSort(a,p,q); MergeSort(a,q+1,r); Merge(a,p,q,r); } } int _tmain(int argc, _TCHAR* argv[]) { int A[]={1,9,8,11,2,6,10,4,99,12,87,3,21}; MergeSort(A,0,12); for(int i=0;i<13;i++) cout<<A[i]<<" "; cout<<endl; getchar(); return 0; }

插入排序

// Insert.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<iostream> using namespace std; #define length(arr) (sizeof(arr)/sizeof(arr[0])) void output(int arr[],int n) { for(int i=0; i< n;i++) printf("%d ",arr[i]); cout<<endl; } void insert_sort(int arr[],int n) { int i,j,temp; for(i=1;i<n;i++) { temp=arr[i]; j=i; if(temp<arr[j-1]) { while(temp<arr[j-1]&&j>0) { arr[j]=arr[j-1]; j--; } arr[j]=temp; } } } int _tmain(int argc, _TCHAR* argv[]) { int a[]={4,3,8,9,7,10,1,11,99,100,15}; int n=length(a); output(a,n); insert_sort(a,n); output(a,n); getchar(); return 0; }

你可能感兴趣的:(算法,delete,ini,insert,merge,output)