输入n个整数,找出其中最小的k个整数并按升序输出
本题有多组输入样例
数据范围: ,输入的整数满足
#include <stdio.h> int main() { int n, k, a[10000] = {0}; scanf("%d %d",&n,&k); for(int i = 0; i<n; i++)scanf("%d",&a[i]); for(int i = 0; i<k; i++){ for(int j = i+1; j<n; j++){ if(a[i]>a[j]){ int temp = a[i]; a[i] = a[j]; a[j] = temp; } } printf("%d ",a[i]); } return 0; }
#include <stdio.h> int main(){ int n;int k;int t; scanf("%d %d",&n,&k); int a[n];int i=0; for(int i=0;i<n;i++){ scanf("%d",&a[i]); } for(int j=0;j<k;j++){//选择排序排到第k次就可以输出了 for(int p=j+1;p<n;p++){ if(a[j]>a[p]){ t=a[j]; a[j]=a[p]; a[p]=t; } } } for(int j=0;j<k;j++){ printf("%d ",a[j]); } }
#include <stdio.h> #define N 1000 int main() { int arr[N],n,k,i,j,min,temp; scanf("%d%d",&n,&k); for(i=0;i<n;i++) { scanf("%d",&arr[i]); } for(i=0;i<n-1;i++) { min=i; for(j=i+1;j<n;j++) { if(arr[min]>arr[j]) { min=j; } } if(min!=i) { temp=arr[i]; arr[i]=arr[min]; arr[min]=temp; } } for(i=0;i<k;i++) { printf("%d ",arr[i]); } return 0; }选择排序
#include <stdio.h> void BubbleSort(int array[], int len); int main() { int n, k; scanf("%d %d", &n, &k); int value[n]; for (int i = 0; i < n; i++) scanf("%d", &value[i]); BubbleSort(value, n); for (int i = 0; i < k; i++) printf("%d ", value[i]); } // 升序排列 void BubbleSort(int array[],int len) { int tem; //外层循环控制 排序的趟数 n个元素排序需要循环n-1次 【1】 for(int i=0;i<len-1;i++) { //内层循环控制比较的次数 n个元素第i趟比较n-i次 【2】 for(int j=0;j<len-1-i;j++) { //比较相邻的元素大小 目的:将最大的元素选出到移动到最后 if(array[j]>array[j+1]){ tem = array[j]; array[j] = array[j+1]; array[j+1] = tem; } } } }
#include<stdio.h> #include<string.h> #include<math.h> int main() { int n,k; while(scanf("%d %d",&n,&k)!=EOF) { int tmp[n]; scanf("%d",&tmp[0]); for (int i=1;i<n;i++) { scanf("%d",&tmp[i]); for (int j=i;j>0;j--) { if (tmp[j]<tmp[j-1]) { int tmp1 =tmp[j]; tmp[j]=tmp[j-1]; tmp[j-1]=tmp1; } else { break; } } } for (int a=0;a<k;a++) { printf("%d ",tmp[a]); } printf("\n"); } return 0; }
#include <stdio.h> void Quicksort(int num[], int low, int high){ if(low<high){ int pivotpos = partition(num, low, high); Quicksort(num, low, pivotpos-1); Quicksort(num, pivotpos+1, high); } } int partition(int num[], int low, int high){ int pivot = num[low]; while(low < high){ while(low<high && num[high]>=pivot){ --high; } num[low] = num[high]; while(low<high && num[low]<=pivot){ ++low; } num[high] = num[low]; } num[low] = pivot; return low; } int main(){ int n, a, i, j, k; while(scanf("%d %d", &n, &k) != EOF){ int num[n]; for(i=0; i<=n; i++){ scanf("%d", &num[i]); } Quicksort(num, 0, n-1); for(i=0; i<k; i++){ printf("%d ", num[i]); } } return 0; }
#include <stdio.h> int main() { int n,k; int arr[10001] = {0}; int i,j; while(EOF!=scanf("%d %d",&n,&k)) { memset(arr,0,sizeof(arr)); for(i=0;i<n;i++) { scanf("%d",&j); arr[j]++; } for(i=0;k>0&&i<10001;i++) { while(arr[i]>0) { arr[i]--; k--; printf("%d ",i); } } printf("\n"); } return 0; }
//最笨的办法:先冒泡排序完毕,再输出前k个 #include<stdio.h> int main() { int i,j,n,k; int a[1000]; while(scanf("%d",&n)!=EOF) { scanf("%d",&k); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { for(j=0;j<i;j++) { if(a[i]<a[j]) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } } } for(i=0;i<k;i++) printf("%d ",a[i]); printf("\n"); } }
#include <stdio.h> #include <stdlib.h> #include <string.h> int comp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int main() { int n,k; int i,j; while(scanf("%d %d",&n,&k)!=EOF) { int *a=(int *)malloc(sizeof(int)*n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } qsort(a,n,sizeof(int),comp); for(i=0;i<k;i++) { printf("%d ",a[i]); } printf("\n"); } return 0; }