using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace quicksort
{
class Program
{
static void swap(int[] numbers, int a, int b)
{
int temp = numbers[a];
numbers[a] = numbers[b];
numbers[b] = temp;
}
static void sort(int[] numbers, int left, int right)
{
if(right <= left) //exit condition
{
return;
}
int pivot = right; //rightest bececome a new pivot
int i = left;
int j = right-1;
while(i<j) //compare with i and j (left and right)
{
if(numbers[i]<=numbers[pivot])
{
i++;
}
else if(numbers[j] >= numbers[pivot])
{
j--;
}
else
{
swap(numbers, i, j);
i++;
}
}
int newpivot = j; //j become a new pivot
swap(numbers, pivot, newpivot); //switch a old pivot value and a new pivot
/////////////////// recursive function
sort(numbers, newpivot + 1, right);
sort(numbers, left, newpivot - 1);
//////////////////
}
static void Main(string[] args)
{
int[] numberArray = { 1, 6, 352, 56, 3, 43, 57, 47, 5, 2, 63, 0, 96 }; //random input
int length = numberArray.Length;
sort(numberArray, 0, length - 1);
Console.WriteLine("Sort result::");
for(int i = 0; i < length; i++)
{
Console.Write("{0} ", numberArray[i]);
}
////////////////////
}
}
}
'Programing(프로그래밍)' 카테고리의 다른 글
C# 어딘가에 있을 대문자를 찾자 (0) | 2015.08.05 |
---|---|
C# 직원관리시스템 (파일 입출력, List<T>와 정렬, 클래스란 무엇인가) (0) | 2015.08.05 |
c# 도형그리기와 팩토리 패턴(객체지향OOP, 클래스cs 관리, 프로퍼티 등) (0) | 2015.08.05 |
C# 입력받은 스트링을 뒤집어보자 (0) | 2015.08.05 |
c# 파칭코 게임 (재귀함수, 랜덤, 잠깐 기다리기, 커서 위치 바꾸기, 키입력 전 무한루프) (0) | 2015.08.05 |