水平|2751:ソート番号2(Java)
13333 ワード
問題に関する詳細は、白駿|2751号:数列2において入手可能である.
ArrayList入力Collectionssort()を使用しました.
Collections.sort()は、混合ソートアルゴリズムと呼ばれる挿入、合成ソートを組み合わせた方法を採用する.
Collections.sort()は、時間的複雑度保証O(n)~O(nlogn)を表す.
アレイを作成し、Arraysを実行します.sort()を使用しなかった理由は以下の通りです.Arrays.sort()最悪の場合の時間複雑度はO(n)である²)そうですから.
でも上の方法で解いた後、他の解答を探してみたら、全く思いつかなかった方法を見つけて、とても悲しかったです.重複した入力がないので,配列のindexを用いて時間的複雑度をO(n)と解くことができるとは思わなかった.
入力された数値制御値は1000000以下であるため、20000001の長さの配列を生成することができる.
0はarr[1000]に格納される構造である.
Collections.sort()の使用
Collections.sort()の使用
メモリ:172544 KB
時間:1816ミリ秒
配列内のインデックスの使用
メモリ:142008 KB
時間:960ミリ秒
に答える
ArrayList入力Collectionssort()を使用しました.
Collections.sort()は、混合ソートアルゴリズムと呼ばれる挿入、合成ソートを組み合わせた方法を採用する.
Collections.sort()は、時間的複雑度保証O(n)~O(nlogn)を表す.
アレイを作成し、Arraysを実行します.sort()を使用しなかった理由は以下の通りです.Arrays.sort()最悪の場合の時間複雑度はO(n)である²)そうですから.
でも上の方法で解いた後、他の解答を探してみたら、全く思いつかなかった方法を見つけて、とても悲しかったです.重複した入力がないので,配列のindexを用いて時間的複雑度をO(n)と解くことができるとは思わなかった.
入力された数値制御値は1000000以下であるため、20000001の長さの配列を生成することができる.
0はarr[1000]に格納される構造である.
ソースコード
Collections.sort()の使用
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(Integer.parseInt(br.readLine()));
}
Collections.sort(list);
for (int i = 0; i < n; i++) {
bw.write(String.valueOf(list.get(i)) + "\n");
}
br.close();
bw.close();
}
}
配列内のインデックスの使用import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
boolean[] arr = new boolean[2000001];
for (int i = 0; i < n; i++) {
arr[Integer.parseInt(br.readLine()) + 1000000] = true;
}
for (int i = 0; i < arr.length; i++) {
if (arr[i]) {
bw.write(String.valueOf(i - 1000000) + "\n");
}
}
br.close();
bw.close();
}
}
メモリ、時間
Collections.sort()の使用
メモリ:172544 KB
時間:1816ミリ秒
配列内のインデックスの使用
メモリ:142008 KB
時間:960ミリ秒
Reference
この問題について(水平|2751:ソート番号2(Java)), 我々は、より多くの情報をここで見つけました https://velog.io/@redrawn/백준-2751-수-정렬하기2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol