用C语言实现s随机交织(修改版)

该博客介绍了一个使用C语言实现的随机交织排序算法,通过不断打乱数组并进行特定条件的比较来达到排序的目的。算法核心在于每次查找满足特定间距条件的元素进行交换,直到整个数组满足排序条件。在代码中,`mysort`函数负责排序,`random`函数用于打乱数组。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <stdlib.h>
#include <math.h>   
#include<memory.h>
#include <time.h>
int  mysort(int N,int s, int *a);
void random(int a[], int n) ;
int main(){
	const int N = 1024  ;
	const int loopMax = N/2 ;
	const int s = floor(sqrt((float)(N/2)))  ;
	int loop ;
	int len =N ;
	int gen = 0 ;
	int a[N] ;
	while(len != 0){
		loop = 0 ;
		len = N ;
		gen ++ ;
		for (int i=0 ;i<N ; i++){   //又重新生成一个随机数组
			a[i]=i+1;
		}
		random(a, N);//打乱数组	

		while( len !=0 && loop <loopMax ){
			len = mysort(N,s,a) ; 
			loop ++ ;
		}		

	}
	//int a[10]= {3,2,7,6,1,5,8,9,10,4};
	//len = mysort (10,2,a) ;
	printf("find it !!! loop = %d ,gen = %d \n",loop ,gen ) ;
	//printf("产生的数据是:") ;
	//for(int i = 0 ;i<N ;i++)
		//printf("%d  ",a[i]) ;
	return 0;

}

void random(int a[], int 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值