c语言冒泡排序clojure直接翻译版本

void swap(int* numberA,
	int* numberB){

	int* tmp=numberA;
	numberA=numberB;
	numberB=tmp;
}
void sortMaoPao(int* target, void* operator){
//假设target不含0元素
//operator 是判断函数,决定目标数据按照什么规则排列,默认0是false,非0是true
	int i,j;
	for(i=1;0!=target[i];i++)
		for(j=0;j<i-1;j++)
			if(((int)operator(target[i],target[j]))
				swap(&target[i],&target[j]);
}
注意,以下的clojure冒泡完全是直接硬生生翻译过来的……并没有体现clojure 本身的 很多特性……所以高手不要拍我……
(defn swap[numberA numberB target]
	(let [tmp (@target numberA)]
		(reset! target (assoc @target numberA (@target numberB)))
		(reset! target (assoc @target numberB tmp))
		nil))
(defn sortMaoPao[target operator]
	(loop[i 1]
		(if(= 0 (nth @target i))
			nil
			(recur
				(loop [j 0]
					(if(< j i)
						(recur
							(if
								(nil? (if (operator (nth @target i) (nth @target j))
									(swap i j target)
									nil))
								(inc j)
								nil))
						(inc j)))))))

你可能感兴趣的:(c,算法,clojure,冒泡)