蒙特卡洛排序 C语言

昨天突发奇想,启发还是在随机数(当然也有蒙特卡洛计算π的启发),今天验证一个。
给一个15个元素的数组,使用随机数,使之从大到小排列。
不同于冒泡、快速、归并等排序哦!
下图,Old是原来的数组,New是最后的结果,count是交换的次数。
后面有程序。
PS:给一个高大上等名字吧,蒙特卡洛排序!

转载请注明出处,联系我: [email protected]
本人热衷于数据库技术及算法的研究,志同道合之士, 欢迎探讨

/*语言:C
名称:蒙特卡洛排序*/

#include <stdio.h>
#include<time.h>
#include<stdlib.h>
#define random(x) (rand()%x)
int main()
{
    int a[15]={34,67,45,345,346,56,678,453,457,89,12,3,47,90,98};
    int temp=-1;
    int n,m,j=0;
    printf("Old:");
    for(n=0;n<14;n++)
    {
    printf("%d,",a[n]);
    }
    printf("\n New:");
    srand((int)time(0));
    for(n=1;n<10000;n++)
    {
    int n1=random(14);
    int n2=random(14);
    if(n1<=n2)
    {
         continue;
    }
    else
       {
          if(a[n1]>=a[n2]&&n1>n2)
          {
              temp=a[n1];
              a[n1]=a[n2];
              a[n2]=temp;
              j++;
           }
       }
    }
    for(n=0;n<14;n++)
    {
         printf("%d,",a[n]);
    }
    printf("\n conut is %d:",j);
    printf("\n");
    return 0;
}

在这里插入图片描述

发布了10 篇原创文章 · 获赞 3 · 访问量 646

猜你喜欢

转载自blog.csdn.net/qq_34677276/article/details/104506177