zoukankan      html  css  js  c++  java
  • 7.24 快排总结

    dd版本:

    实战中,未被超越。

     1 void quick_sort(int *a,int f,int t)
     2 {
     3     int i,j,k;
     4     i=f;
     5     j=t;
     6     k=a[f];
     7  
     8     if(i>=j) return;
     9  
    10     while(i<j)
    11     {
    12         while(i<j && a[j]>=k)
    13             j--;
    14         if(i<j)
    15             a[i++]=a[j];
    16  
    17         while(i<j && a[i]<=k)
    18             i++;
    19         if(i<j)
    20             a[j--]=a[i];
    21     }
    22  
    23     a[i]=k;
    24  
    25     quick_sort(a,f,i-1);
    26     quick_sort(a,i+1,t);
    27     return;
    28 }

    消除一个递归的快排:

     1 #include<stdio.h>
     2 #define N 250000
     3  
     4 void quick_sort(int *a,int f,int t)
     5 {
     6     int i,j,k;
     7 
     8     while(f < t) {
     9     i=f;
    10     j=t;
    11     k=a[f];
    12  
    13     while(i<j)
    14     {
    15         while(i<j && a[j]>=k)
    16             j--;
    17         if(i<j)
    18             a[i++]=a[j];
    19  
    20         while(i<j && a[i]<=k)
    21             i++;
    22         if(i<j)
    23             a[j--]=a[i];
    24     }
    25  
    26     a[i]=k;
    27  
    28     quick_sort(a,f,i-1);
    29 
    30     f = i + 1;
    31     }
    32     return;
    33 }
    34  

    《算法C语言实现》

    冒泡 +  快排

     1 #include <stdio.h>
     2 #include <string.h>
     3  
     4 #define swap(A, B) {int tmp=A;A=B;B=tmp;}
     5  
     6 int A[1012];
     7  
     8  
     9 void bubble(int A[],int l, int r){
    10     int i,j;
    11     for(i=l;i<r;++i)
    12         for(j=r;j>l;j--){
    13             if(A[j-1]<A[j])
    14                 swap(A[j-1], A[j]);
    15         }
    16 }
    17  
    18 int partition(int a[], int l, int r){
    19     int i = l-1,j=r;
    20     for(;;){
    21         while(a[++i]>a[r]);
    22         while(a[r]>a[--j])
    23             if(j==l) break;
    24         if(i>=j) break;
    25         swap(a[i],a[j]);
    26     }
    27     swap(a[i],a[r]);
    28     return i;
    29 }
    30  
    31 void quicksort(int a[], int l, int r){
    32     int i;
    33     if(r<=l) return;
    34     i = partition(a, l, r);
    35     quicksort(a, l, i-1);
    36     quicksort(a, i+1, r);
    37 }

    速度有待提高

    快排的库函数

    qsort   与结构体联系比较大。

  • 相关阅读:
    C#按键打开文件选择对话框,并把选择好的路径保存/显示到textBox
    C#按钮打开浏览器,网址
    阅读笔记05
    进度条14
    冲刺4--10
    冲刺3
    冲刺2
    课堂训练书本
    进度条13
    课堂水王2
  • 原文地址:https://www.cnblogs.com/firstrate/p/3211087.html
Copyright © 2011-2022 走看看