算法2022让快速排序通行世界-排序算法12快速排序01

//让快速排序(以及更快速的排序)算法 通行世界

//希望程序员不要再写 冒泡排序算法等
#include<stdio.h>

//#include <iostream>

#define N10 10

//int low=0,high=n-1;

void FastSort(int list[],int a,int b) {//110

//     int low=a,high=b;

     if(a<b)    //low<high)  //如果不加这个判断递归会无法退出导致堆栈溢出

     {//220if

         int low=a,high=b;

         int pivot=list[low]; //枢轴记录

         while(low<high)

         {//330

             while(low<high && list[high]>=pivot) --high;

             //list[high]<pivot

             list[low]=list[high];

             while(low<high && list[low]<=pivot)  ++low;

             //list[low]>pivot

             list[high]=list[low];

         }//330while

         list[low]=pivot;

         FastSort(list,a,low-1);

         FastSort(list,low+1,b);

     }//220if

}//110FastSort

int main(int arg,char *args[])

{

     int a[N10]={10,1,6,2,6,8,6,18,3,90};

     FastSort(a,0,(N10-1));

     int i;

     printf("排序后:");

     for(i=0; i<N10; i++)

     {

         printf("%d,",a[i]);

     }

     printf("\n");

     getchar();

     return 0;

}//10main

#include<ctime>

#include<stdio.h>

#include<math.h>

#define G0G10 10.0

#define Y400 400

#define X1900 1900

int Aa[1+X1900][1+Y400];

void setAa(int n0=0) {

    for(int i=0;i<=X1900;++i) {//for110i

        for (int j=0;j<=Y400;++j) {

            Aa[i][j] =n0;

        }

    }//for110i

}//setAa

double xR;

int main() {

    //

    setAa(0);

    //

    double Gg=G0G10;

    clock_t star01=clock();

//    printf("%d\n",star01);

    //

    

    double xRf02=0;

    double Ss=0;

    double Tt2T=0;

    unsigned long int uliTimeSec=0;

//    star01=clock()-5; //提前 2次 (估 5秒,预演)

    star01=clock()+20;

    for(int i=-1;i<29;++i) {

        

        xR=(double)rand();

        xRf02= xR/RAND_MAX/100000 - 0.000004; //5个0

        Gg=G0G10;

//        Gg= G0G10+xRf02;

        

        if(i>0) {uliTimeSec= clock()-star01; uliTimeSec= uliTimeSec<0? 0: uliTimeSec; }

        if(i<0) continue;

        if(0==i) {star01=clock(); star01= 30+clock();} //内循环微调1次

        

        printf("第%d次,%d秒:\n",1+i,uliTimeSec);

//        printf("g=%f\n",Gg);

        //S= 1/2*a*t^2;

        Tt2T= (double)uliTimeSec*(double)uliTimeSec;

        Ss= Gg*Tt2T/2.0;

        printf("S=%f\n",Ss);

        

        //给坐标赋予值

        

        int xx= Ss/500;

//        if(xx>300) xx=300;

        if(xx<0) xx=0;

        int yy=uliTimeSec/5;

        Aa[yy][xx]=1;

        

    }//for110i

    

    //输出

    printf("绘图:\n");

    //i时间; j:S位移

    for(int i=0;i<19;++i) {

        for(int j=0;j<299;++j) {

            

            if(1==Aa[i][j]) {

                printf("*");

                goto Lab550;

            }

            else printf(" ");

            

        }//220j

Lab550:

        //if(0==i%20)

            printf("\n");

    }//110i

    //

}//main

猜你喜欢

转载自blog.csdn.net/aw344/article/details/128368161