import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // while (in.hasNext()) { String str = in.nextLine(); String[] strs = str.split(" "); int n = strs.length; int k = Integer.valueOf(strs[n - 1]); int[] nums = new int[n - 1]; for (int i = 0; i < n - 1; i++) { nums[i] = Integer.valueOf(strs[i]); } PriorityQueue<Integer> minheap = new PriorityQueue<Integer>(); int[] result = new int[k]; for (int i = 0; i < n - 1; i++) { minheap.offer(nums[i]); } for (int i = 0; i < k; i++) { System.out.print(minheap.poll() + " "); } // } } }
import java.util.*; public class Main { public static void main(String [] args) { Scanner sc=new Scanner(System.in); while(sc.hasNextLine()) { String str=sc.nextLine(); String [] arr=str.split(" "); int [] arr2=new int[arr.length-1]; for(int i=0;i<arr.length-1;i++) { arr2[i]=Integer.parseInt(arr[i]); } int n=Integer.parseInt(arr[arr.length-1]); Arrays.sort(arr2); for(int i=0;i<n;i++) { if(i==n-1) { System.out.print(arr2[i]); } else { System.out.print(arr2[i]+" "); } } } } }
import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String str = sc.nextLine(); String[] strs = str.split(" "); int[] nums = new int[strs.length-1]; for(int i=0;i<strs.length-1;i++){ nums[i]=Integer.valueOf(strs[i]); } int k = Integer.valueOf(strs[strs.length-1]); Arrays.sort(nums); for(int i=0;i<k;i++){ System.out.print(nums[i]); if(i != k-1){ System.out.print(" "); } } } } }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner s = new Scanner(System.in); String str = s.nextLine(); String[] str2 = str.split(" "); int[] int1 = new int[str2.length-1]; for(int i = 0 ; i< str2.length-1 ;i++){ int1[i] = Integer.parseInt(str2[i]); } for(int j =0; j<int1.length-1;j++){ for(int i =0 ; i<int1.length-1;i++){ if(int1[i]>int1[i+1]){ int k = int1[i]; int1[i] = int1[i+1]; int1[i+1] = k; } } } int i = 0; for (; i < Integer.parseInt(str2[str2.length-1])-1; i++){ System.out.print(int1[i]); System.out.print(" "); } System.out.print(int1[i]); } }
//最小堆实现的优先队列 import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int count = 0; int[] array = new int[101]; while (in.hasNext()) array[count++] = in.nextInt(); int k = array[count - 1]; PriorityQueue<Integer> min = new PriorityQueue<>(); for (int i = 0; i < count - 1; i++) min.offer(array[i]); for (int i = 0; i < k; i++) { if (i < k - 1) System.out.print(min.poll() + " "); else System.out.println(min.poll()); } } } --------------------------------------------------------------- //修改输入数据获取的方式 import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String string = in.nextLine(); String[] strings = string.split("\\s+"); int k = Integer.parseInt(strings[strings.length - 1]); int[] array = new int[strings.length - 1]; for (int i = 0; i < strings.length - 1; i++) array[i] = Integer.parseInt(strings[i]); Arrays.sort(array); for (int i = 0; i < k; i++) { if (i < k - 1) System.out.print(array[i] + " "); else System.out.println(array[i]); } } }
import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { String[] numbers = scanner.nextLine().split(" "); int n = numbers.length - 1; int k = Integer.parseInt(numbers[n]); String temp; int m = 0; for (int j = n - 1; j >= 0; j--) { for (int i = j; i >= 1; i--) { if (Integer.parseInt(numbers[i]) < Integer.parseInt(numbers[i - 1])) { temp = numbers[i - 1]; numbers[i - 1] = numbers[i]; numbers[i] = temp; } } } for (int i = 0; i < k - 1; i++) { System.out.print(numbers[i]); System.out.print(" "); } System.out.print(numbers[k - 1]); } } }这个题就是一个不完全的冒泡排序就可以解决,把所有输入的数字放到一个数组里面,最后一个数字是k值,不参与排序,把最小的k个按照从小到大的顺序依次冒泡到前面,然后输出即可
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] strArr = sc.nextLine().split(" +");
sc.close();
int[] arr = new int[strArr.length-1];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(strArr[i]);
}
int k = Integer.parseInt(strArr[strArr.length-1]);
Arrays.sort(arr);
for (int i = 0; i < k; i++) {
if(i == k-1)
System.out.println(arr[i]);
else
System.out.print(arr[i]+" ");
}
}
}
import java.util.ArrayList; import java.util.Collections; import java.util.PriorityQueue; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); while (cin.hasNextInt()) { int cur = cin.nextInt(); list.add(cur); } int k = list.remove(list.size() - 1); Collections.sort(list); for (int i = 0; i < k; i++) { if (i != 0) System.out.print(" "); System.out.print(list.get(i)); } } }
//由于本题要求输出的最小的k个数是升序排列,所以使用最小堆 import java.util.*; public class Main{ //调整以下标i的结点为根节点的堆 public static void minHeapify(int [] A, int i, int minHeapSize){ int l = 2*i + 1;//左孩子下标 int r = 2*i + 2;//右孩子下标 int largest = 0;//根节点,左右孩子中结点最小的下标 if(l < minHeapSize && A[i]>A[l]){ largest = l; }else{ largest = i; } if(r < minHeapSize && A[largest] > A[r]){ largest = r; } if(largest != i){ int temp = A[i]; A[i] = A[largest]; A[largest] = temp; minHeapify(A,largest,minHeapSize); } } //构建最小堆 public static void buildMinHeap(int []A){ int minHeapSize = A.length; for(int i=(minHeapSize/2-1) ; i>=0; --i){ minHeapify(A,i,minHeapSize); } } //获取最小的k个数 public static void getSmallKNum(int []A, int k){ int minHeapSize = A.length; buildMinHeap(A); for(int i=A.length-1; i>0; --i){ if(k == 0) break; int temp = A[0]; A[0] = A[i]; A[i] = temp; minHeapSize--; k--; minHeapify(A,0,minHeapSize); } } //主程序 public static void main(String[] args){ //数据输入 Scanner in = new Scanner(System.in); String[] s = in.nextLine().split(" "); int []A = new int[s.length-1]; int k = 0; for (int i=0; i<s.length; ++i){ if(i < s.length-1){ A[i] = Integer.parseInt(s[i]); }else{ k = Integer.parseInt(s[i]); } } //获取最小的k个数,从数组A末尾向前数k个即为升序的最小的k个数 getSmallKNum(A,k); //按要求打印 for(int i=A.length-1; i> A.length-k ; --i){ System.out.print(A[i] + " "); } System.out.println(A[A.length-k]); } }