일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- C++ gui 라이브러리
- a tour of go
- 연결리스트
- go
- JUCE library
- gui
- JUCE 튜토리얼
- C++
- 알고리즘
- C++ library
- JUCE
- 프로그래밍
- JUCE라이브러리
- Nebula
- go channel
- 코딩
- 자료구조
- OS
- C언어
- C++ gui
- 운영체제
- 리듬게임
- 공룡책
- vim-go
- Docker
- LOB
- 백준
- tour of go
- BOJ
- c++ heap
Archives
- Today
- Total
CafeM0ca
[알고리즘]삽입 정렬(C++) 본문
반응형
삽입 정렬 로직
1.데이터가 있다. 데이터는 두 개 이상이다.
2.두번째 요소부터 마지막 요소까지 돈다.
3.n번째 요소는 n부터 1까지 돈다.
4.만약 n번째 요소가 n-1번째 요소보다 크면 그만 돈다.
5.삽입으로 인해 요소들이 밀린다.
O(n^2)의 성능을 보인다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <iostream> using namespace std; inline void ShowArray(int arr[],int); void InsertSort(int arr[],int len) { for(int i=1;i<len;i++) { for(int j=i;j>0;j--) //j는 i-1번째 원소 { if(arr[j-1] < arr[j]) break; ShowArray(arr,len); char remember = arr[j-1]; //데이터 보존 arr[j-1] = arr[j]; arr[j] = remember; } } ShowArray(arr,len); } inline void ShowArray(int arr[],int len) { cout << "array: "; for(int i=0;i<len;i++) cout << arr[i] << ' '; cout << '\n'; } int main() { int arr[11]{'\0',}; int n; cout << "입력받을 개수 : "; cin >> n; for(int i=0;i<n;i++) { int num; cin >> num; arr[i] = num; } ShowArray(arr,n); InsertSort(arr,n); return 0; } | cs |
반응형
'Programming > 자료구조|알고리즘' 카테고리의 다른 글
[알고리즘]선택정렬(C++) (0) | 2018.06.02 |
---|---|
[자료구조]단일연결리스트(C 반복문) (0) | 2018.05.16 |
[자료구조]단일 연결 리스트(C++ 재귀) (0) | 2017.12.04 |
[C]큐 구현 (0) | 2017.11.16 |
[C]스택 구현 (0) | 2017.11.16 |
Comments