본문 바로가기

전체 글

최대힙을 이용해서 제자리 정렬하기 힙정렬 수행시간이 O(n logn) // 합병 퀵보다 빠름 O(n^2) 후기 1. 전역변수를 정확히 통제한다면 쓰는 건 나쁜 것 같지 않음. 아직 코드가 단순해서 그런 걸 수 있지만.. 2. 간단한 것도 논리 정리하고 들어가는게 나음. 논리 간단한 것들은 어짜피 정리하는데에 시간도 얼마 안걸림. 쉽다고해서 그냥 코딩하다가 시간 꼬인 감이 있음. 3. 다시 할 것 같진 않지만... 시간되면 전역 변수 없이 코드를 구성하기.(예상하건데 사실상 함수 인자들이 더러워지고, 노가다작업 일 거 같음. 못해서 안하는게 아님.. 아마도..) #include int A[101] ={-1, 0}; int N = 0; int size = 0; // 다운힙에 last 안넣으려고. void insertItem(int key);.. 더보기
배열로 구현한 최대힙과 우선순위 큐를 결합한 형태 후기 1. 역시 간단히 정리하고 코딩시작하는게 훨씬 낫다. //지금은 ㅈ밥이니까 이런거 정리하고 시작하지만 나중엔 이정도 코드는 그냥 바로 코딩 가능하겠지 //최대힙 #include int A[101] ={-1, 0}; int N = 0; void insertItem(int key); void upHeap(int a); int deleteItem(); void downHeap(int i); void main() { char sta = 'a'; /*for(int i =0 ; i=A[r]) //두 자식이 모두 부모보다 작음 return; else // 둘중에 하나라도 크면 둘 중 큰 자식과 부모의 위치 바꾸기 { if(A[l]< A[r]) { temp = A[r]; A[r] = A[i]; A[i] = tem.. 더보기
합병 정렬 리스트로 구현해보기 단일리스트 형태로 만들어서 합병정렬을 구현해 봄. 코딩 후기 및 추가적으로 더 확인 할 것 1.코딩 초보라서 만드는데도 오래걸리고 오류를 찾는 방식도 어리숙해서 오래걸렸다. 2. 메모리 해제와 관련된 부분들은 정확히 처리하지 않고 일단 돌아가게만 했다. 3. 메인함수에서 free(list); 하면 코드가 중단되는데 왜 그럴지. (2018.06.28 추가)병슨인게 result나 list나 같은 리스트네.. 그에 따라서 mergeSort();는 void형으로 바꾸고 메인함수에 mergeSort의 반환형을 result로 받는 부분은 삭제하면 될 것 같다. (추가 의문,아 그리고, 해제할 때는 노드 하나하나 해제해야하는 건지. ) 조교님한테 물어봤는데 노드 하나하나 제거해주는게 맞음. 그 다음에 리스트를 제거해.. 더보기