본문 바로가기

알고리즘/정렬

[삽입정렬] Python, Kotlin, Java

우선 배열은 0부터 시작하지만 우리가 바로 오른 쪽 값 부터 비교 하므로 1부터 배열의 길이까지 for 문을 돌린다. j는 i의 시작값 좌측으로 -1 씩 인덱스를 감소하면서 정렬 시킨다.

기본적으로 i와 j의 이중 for문으로 시간복잡도는 O(N^2)가 된다.

- Python

# 파이썬
array=[7,5,9,0,3,1,6,2,4,8]

for i in range(1,len(array)) :
    for j in range(i,0,-1) : 
        if array[j] < array[j-1] :
            array[j],array[j-1] = array[j-1],array[j]
        else :
            break

print(array)
            

- Kotlin

//코틀린
fun main(array: Array<String>){
    var array = arrayOf<Int>(7,5,9,0,3,1,6,2,4,8)

    for (i in 1 until array.size){
        for (j in i downTo 1){
            if( array[j-1]>array[j]){
                var temp:Int = array[j]
                array[j]=array[j-1]
                array[j-1]=temp
            }
        }
    }


    for ((index, item) in array.withIndex()) {
        print(item)
        if(index < array.size-1){
            print(", ")
        }
    }
}

- Java

// 자바
public class Main_InsertSort {
    public static void main(String[] args) {
        int[] array={7,5,9,0,3,1,6,2,4,8};
        for (int i=1;i< array.length;i++){
            for (int j=i;j>0;j--){
                if(array[j-1]>array[j]){
                    int temp = array[j];
                    array[j] = array[j-1];
                    array[j-1]=temp;
                }
            }
        }
        for(int k=0;k< array.length;k++){
            System.out.print(array[k]);
            if(k < array.length-1){
                System.out.print(", ");
            }
        }
    }
}

'알고리즘 > 정렬' 카테고리의 다른 글

[선택정렬] Python, Java, Kotlin  (0) 2020.12.27