排序


title: 排序
date: 2016-08-15 17:56:03
tags: 算法


排序

插入排序

插入排序就是插扑克牌,插入已经前面排序好的牌

public void insertSort(int a[]){
    for(int p=1;p0;j--){
          if(a[j-1]>a[j]){
            a[j]=a[j-1];
          }
          a[j]=temp;
        }
    }
}

快速排序

快速排序的思想是 分而治之,用到递归,排序的时候比较的量小了就快了。

思路是取基准,小于基准的在左边,大于基准的在右边,然后递归

define count 3;

void Swap(int *a,int *b){
  int c=*a;
  *b=*a;
  *a=c;
}
//取基准的方法一般是取中间值
 int Middle3(int A[],int left,int right){
    int center=left+right/2;
    if(A[left] > A[center]){
      Swap(&A[left],$A[center]);
    }
    if(A[center] > A[right] ){
      Swap(&A[center] ,&A[right]);
    }
    if(A[left] > A[right]){
      Swap(&A[left],&A[right]);
    }
    Swap(&A[center],&A[right-1]);
  retrun A[right-1];
}

void quickSort(int A[],int left,int right){
    if(countm);
            while(A[++j]

归并排序

合并两个已经排序的表,分而治之,递归思想的应用

void  MergeSort(int a[],int n){
  int *temp;
  temp=malloc(N*sizeof(int));
  if(temp != NULL){
    MSort(a,temp,0,n-1);
  }
}

void MSort(int a[],int temp[],int left,right){
  int center;
  if(left

你可能感兴趣的:(排序)