游客 Signup | Login
中文 | En

3401 - 考试二 冒泡排序

输入7个数,用冒泡法对前M个数按从小到大排序,并输出;(0<M<=7);

Input

输入七个数字以空格分隔开,按回车键输入M。

Output

输出经过冒泡的数据,用一个空格分隔(最后一个数字末尾有分隔,用"%d "输出);

Examples

Input

10 9 8 7 6 5 4
3

Output

8
9
10

Solution C

int main(int argc, const char * argv[]) {
    
    int data[7];
    int M = 0;
    int i = 0;
    int j = 0;
    int swap = 1;
    int k = 1;
    int tmp = 0;
      for (i = 0; i < 7; i++) {
        scanf("%d",&data[i]);
    }
    i = 0;
    scanf("%d",&M);
  
    while (swap) {
        swap = 0;
        for (j = 6 ; j > i; j--) {
            if (data[j - 1]>data[j]) {
                swap = 1;
                tmp = data[j - 1];
                data[j - 1] = data[j];
                data[j] = tmp;
            }
        }
            i++;
          k = 1;
              while(data[k-1]<data[k])
              		k++;
            if(k == M+1)
                break;
        
       }
    for (i = 0; i < 7; i++)
        printf("%d ",data[i]);
}

Solution C++

#include <stdio.h>
#define maxSize 7

void sort(int *arr, int n) {
	int i, j;
	int temp;
	for (i = 0; i < n-1; ++i) {
		for (j = i+1; j <= n-1; j++) {
			if (*(arr+i) > *(arr+j)) {
				temp = *(arr+i);
				*(arr+i) = *(arr+j);
				*(arr+j) = temp;
			}
		}
	}
}

void output(int *arr, int n) {
	int i;
	for (i = 0; i < n; i++) {
		printf("%d\n", *(arr+i));
	}
}

int main() {
	int i, n;
	int arr[maxSize];
	
	for (i = 0; i < maxSize; ++i) {
		scanf("%d", &arr[i]);
	}

	scanf("%d", &n);

	sort(arr, n);

	output(arr, n);

	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题