NYOJ233 Sort it

原题链接

烂题。冒泡可行但违背了原题的意思。

附ac代码:

#include <stdio.h>
#include <stdlib.h>

int main(){
	int n, *a, count, i, j, t;
	while(scanf("%d", &n) == 1){
		i = count = 0;
		a = (int *)malloc(sizeof(int) * n);
		while(i < n)
			scanf("%d", &a[i++]);
		for(i = 0; i < n - 1; ++i)
			for(j = i + 1; j < n; ++j)
				if(a[i] > a[j]){
					t = a[i], a[i] = a[j], a[j] = t;
					++count;
				}
				
		printf("%d\n", count);
		
		free(a);
	}	
	return 0;
}


附原WA代码

 

#include <stdio.h>
#include <stdlib.h>

int main(){
	int n, *a, count, i, j, t;
	while(scanf("%d", &n) == 1){
		i = count = 0;
		a = (int *)malloc(sizeof(int) * n);
		while(i != n)
			scanf("%d", &a[i++]);
		while(1){
			for(i = j = 0; i != n - 1; ++i){
				if(a[i] > a[i + 1]){
					++j;
				t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;
				}
				if(j == 0) break;
				count += j;
			}
			break;
		}
		printf("%d\n", count);
		
		free(a);
	}	
	return 0;
}        



posted on 2014-02-15 11:41  长木Qiu  阅读(150)  评论(0编辑  收藏  举报