C로 구현한 버블 정렬
#include <stdio.h> #define max 3 void bubble_sort(int * list,int count) { // 버블 정렬 알고리즘 int i, j; for (i = 1; i <= max - 1; i++) { // 처음엔 change를 max-1번 해야 됨, 마지막엔 change를 1번 해야 됨 for (j = 1; j <= max - i; j++) { if (list[j - 1] > list[j]) { int tmp = list[j - 1]; list[j - 1] = list[j]; list[j] = tmp; } } if (j > max - i) } }
C로 구현한 삽입 정렬
#include <stdio.h> #define max 3 void insert_sort(int * list,int count) { // 삽입 정렬 알고리즘 int i, j, k; for (i = 1; i < max; i++) { k = list[i]; for (j = i - 1; j >= 0 && list[j] > k; j--) { // list[j]<=k라면 i인덱스까지 정렬이 돼 있다는 것 list[j + 1] = list[j]; } list[j + 1] = k; } }
요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함
다른 정렬은 마지막 요소까지 비교하지만,
삽입은 list[j]<=k인 순간, for문을 빠져 나오므로 다른 정렬에 비해 반복 횟수가 적음