アルゴリズムレッスン復習する


この文章は、ブログの責任者がこれまで学んだアルゴリズムの独学と授業内容をまとめることを目的とした文章です.

ソート(1)


ソートは、データを順番にリストする方法を意味します.
[3,0,4,2,1]
[0,1,2,3,4] #오름차순
[4,3,2,1,0] #내림차순

バブル整列(Bubble Sort)



  • 最初の資料と2番目の資料、2番目の資料と3番目の資料、3番目と4番目の資料、このような方法で(マギー)
    幕−1)最初の資料を最後の資料と比較し,同時に資料を並べ替える.

  • 時間複雑度O(N^2)
  • # 파이썬 코드
    def bubble_sort(array):
        n=len(array) 
        for i in range(n-1): # 리스트-1의 크기만큼
            for j in range(n-i-1): #array[j] 와 array[j + 1] 을 비교할거라, 
            # 마지막 원소까지 가지 않아도 됨
                if array[j] > array[j+1]:
                    array[j], array[j + 1] = array[j + 1], array[j]
        return array
    // C 코드
    for (int i = 1; i <n; i++) {
    		for (int j = 0; j < n-i; j++) {
    			if (arr[j] > arr[j + 1]) swap(&arr[j], &arr[j + 1]);
    		}
    	}

    整列選択(Selection Sort)


  • には、次のようなデータ列があります.
    最小データの検索
    すべてが見える場合は、最小のデータを一番前に移動してからブラウズし、2番目の小さいデータを2番目の位置
  • に配置する.
  • 時間複雑度O(N^2)
  • #python 소스코드
    def selection_sort(array):
        n=len(array)
        for i in range(n-1): # Q. 여기서 왜 5 - 1 일까요?
            min_index=i
            for j in range(n-i): # A. 맨 마지막 비교는 하지 않아도 되기 때문
                if array[i + j] < array[min_index]:
                    min_index = i + j #변경
            array[i], array[min_index] = array[min_index], array[i]
        return array #오름차순 정렬
    //c 소스코드
    for (int i = 0; i < n-1; i++) {
    		min = i
    		for (int j = i+1; j < n; j++) {
    			if (min > arr[j]) {
    				min = arr[j];
    				index = j;
    			}
    		}
    		swap(&arr[i], &arr[index]);
    	}

    挿入


  • 各数字を適当な位置に挿入する並べ替え方法は、入る位置を選択するためにN回、選択するためにN回、したがって
  • である.
  • 時間複雑度:時間複雑度O(N^2)
  • #python 소스코드
    def insertion_sort(array):
        n = len(array)
        for i in range(1, n):
            for j in range(i):
                if array[i - j - 1] > array[i - j]:
                    array[i - j - 1], array[i - j] = array[i - j], array[i - j - 1]
                else:
                    break #비교를 안해도 되는 순간이 오면 break
        return array
    //c 소스코드
    for (int i = 0; i < n - 1; i++) {
    		int j = i;
    		while (j>=0 && a[j]>a[j+1]){
    			swap(&a[j], &a[j + 1]);
    			j--;
    		}
    	}

    リファレンス

  • 本科生時期資料構造課
  • わかりやすいアルゴリズム-スパルタ符号化クラブ
  • コンピュータエンジニアリング専門多機能一体パッケージ-高速キャンパス
  • ソースコード
    https://github.com/BOLTB0X/Sparta-Algorithm/tree/main/week_3
    https://github.com/BOLTB0X/DataStructure_Argolithm/tree/main/05_Sort