양 옆의 수를 바꿔주면서 진행하는 정렬
가장 오른쪽에 큰 수가 정렬되면서 진행
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 | #include <iostream> using namespace std; int time = 0; int main(void){ int nums[] = {1, 15, 5, 3, 9, 7, 6, 4, 2, 10, 8, 1, 11, 11, 12}; int arrSize = sizeof(nums)/sizeof(nums[0]); for(int i = 0 ; i < arrSize; i++){ cout << nums[i] << " "; } cout << endl; int temp; // 인덱스 i는 전체 횟수 돌리기용(배열의 개수만큼), j는 양옆의 숫자 비교 for(int i = 0; i < arrSize; i++){ time++; for(int j = 0; j < arrSize-i-1; j++){ time++; if(nums[j]>= nums[j+1]){ temp = nums[j]; nums[j] = nums[j+1]; nums[j+1] = temp; } } } for(int i=0; i<arrSize;i++){ cout << nums[i] << " "; } cout<<endl; cout<<time<<endl; return 0; } | cs |
728x90
'# Computer Science > 알고리즘, 자료구조' 카테고리의 다른 글
그래프 간단 정리 (0) | 2021.06.02 |
---|---|
트리 간단 정리 (0) | 2021.05.31 |
[PS] 그리디 알고리즘 (0) | 2021.03.02 |
[알고리즘] Selection Sort 선택 정렬 (0) | 2018.12.21 |