댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
C#
2013.04.17 14:07
Quick Sort 함수
조회 수 12055 댓글 0
함수
private void quicksort(int[] input, int low, int high) { int pivot_loc = 0; if (low < high) pivot_loc = partition(input, low, high); quicksort(input, low, pivot_loc - 1); quicksort(input, pivot_loc + 1, high); } private int partition(int[] input, int low, int high) { int pivot = input[high]; int i = low - 1; for (int j = low; j < high-1; j++) { if (input[j] <= pivot) { i++; swap(input, i, j); } } swap(input, i + 1, high); return i + 1; } private void swap(int[] ar, int a, int b) { temp = ar[a]; ar[a] = ar[b]; ar[b] = temp; }
예제2
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Quicksort { class Program { static void Main(string[] args) { // Create an unsorted array of string elements string[] unsorted = { "z","e","x","c","m","q","a"}; // Print the unsorted array for (int i = 0; i < unsorted.Length; i++) { Console.Write(unsorted[i] + " "); } Console.WriteLine(); // Sort the array Quicksort(unsorted, 0, unsorted.Length - 1); // Print the sorted array for (int i = 0; i < unsorted.Length; i++) { Console.Write(unsorted[i] + " "); } Console.WriteLine(); Console.ReadLine(); } public static void Quicksort(IComparable[] elements, int left, int right) { int i = left, j = right; IComparable pivot = elements[(left + right) / 2]; while (i <= j) { while (elements[i].CompareTo(pivot) < 0) { i++; } while (elements[j].CompareTo(pivot) > 0) { j--; } if (i <= j) { // Swap IComparable tmp = elements[i]; elements[i] = elements[j]; elements[j] = tmp; i++; j--; } } // Recursive calls if (left < j) { Quicksort(elements, left, j); } if (i < right) { Quicksort(elements, i, right); } } } }
Dreamy의 코드 스크랩내가 모으고 내가 보는
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5