4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

スターリンソートをJavaで実装してみた

Last updated at Posted at 2019-08-01

#概要

Javaでこれを実装してみます。
Kotlinは既にあったけど、やりたかったのでやりました!

#引用元
計算量O(n)の画期的なソートアルゴリズムであるスターリンソートをHaskell で実装してみた #Haskell

#ソースコード

StalinSort.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class StalinSort {
	public static void main(String[] args) {
		Integer[] data = {1,3,4,2,3,7,3,9};
		Integer tmp = data[0];
		List<Integer> index = new ArrayList<Integer>();

		for (int i = 1; i < data.length; i++) {
			if (tmp > data[i]) {
				index.add(i);
			} else {
				tmp = data[i];
			}
		}

		List<Integer> list = new ArrayList<Integer>(Arrays.asList(data));

		for (int j = index.size(); j > 0; j--) {
			int num = index.get(j - 1);
			list.remove(num);
		}

		System.out.println(list);
	}
}

ちょっと長いかもですがこんな感じに。
結果は以下のように。

[1, 3, 4, 7, 9]

ちゃんと2,3,3が粛清されてくれました。

#最後に
個人的にはInteger型とremove(int i)について勉強になったので一歩前進かなといったところです。

#編集履歴
2019/08/02
コメントでご指摘のあったfor文の改善。

4
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?