[백준2750] 오름차순 버블정렬

marintelli·2021년 4월 20일
0

알고리즘

목록 보기
2/3
post-thumbnail

수를 오름차순으로 정렬하는데, 가장 기초적인 버블 정렬에 대해서 알아보자.

#include <stdio.h>

void BubbleSort(int arr[], int n)
// 정렬할 배열의 주솟값과 길이 전달
{
	int i, j;
	int temp;

	for (i = 0; i < n - 1; i++) // 바깥 반복문을 한번 돌때마다 n째 인덱스는 최댓값으로 확정
	{
		for (j = 0; j < (n - i) - 1; j++)
			/*
			j는 인덱스를 뜻하며 비교연산을 진행해주는 반복문
			-1? 배열의 인덱스가 네개이면 비교연산 횟수는 0-1, 1-2, 2-3 3번
			(n-i)? 바깥 for문이 한번 돌때마다 n번째 인덱스는 확정되므로 연산횟수를 i번 줄임
			*/
			if (arr[j] > arr[j + 1])
				// 이전 인덱스가 더 크다면
			{
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
				//스왑
			}
	}

}

int main(void)
{
	int arr[7] = { 3, 2, 5, 1, 6, 7, 8 };

	int i;

	BubbleSort(arr, sizeof(arr) / sizeof(int));
	// 배열 주소값, 배열의 길이(=총배열메모리/데이터자료형)

	for (i = 0; i < sizeof(arr) / sizeof(int); i++) printf("%d ", arr[i]);
	// for문을 이용한 배열 순차 출력

	printf("\n");

	return 0;

}

이 원리를 이용해서 c#으로 다시 짜면

using System;

namespace ConsoleApp2
{
	class Program
	{
		static void BubbleSort(ref int[] arr, int n)
		{
			{
				int i, j;
				int temp;

				for (i = 0; i < n - 1; i++)
				{
					for (j = 0; j < (n - i) -1 ; j++)

						if (arr[j] > arr[j + 1])
						{
							temp = arr[j];
							arr[j] = arr[j + 1];
							arr[j + 1] = temp;
						}
				}

			}
		}

		static void Main(string[] args)
		{
			int N = int.Parse(Console.ReadLine());
			int[] arr = new int[N];

			for (int i = 0; i < N; i++)
			{
				arr[i] = int.Parse(Console.ReadLine());
			}

			BubbleSort(ref arr, N);
			

			for (int i = 0; i < N; i++)
			{
				Console.WriteLine(arr[i]);
			}


		}
	}
}

그러나 이보다 쉬운 방법은 C#에서 Array.sort 메소드를 이용하면 1차원 배열을 쉽게 정렬을 쉽게 할 수 있다.

using System;

namespace ascending
{
    class Program
    {
        static void Main(string[] args)
        {
            // for문을 돌리기 위해 n값을 지정한다.
            int n = Int32.Parse(Console.ReadLine());

            // int를 담을 배열을 만들어 준다.
            int[] arr = new int[n];

            // 배열을 따로 생성합니다.
            for (int i = 0; i < n; i++)
            {
                arr[i] = Int32.Parse(Console.ReadLine());
            }

            Array.Sort(arr);

            foreach (int i in arr)
            {
                Console.WriteLine(i);
            }

            Console.ReadLine();
        }
    }
}
profile
Unity와 IOS 를 주로 다룹니다. 매일 배운 것들 기록하고, 시리즈로 정리하는 벨로그

관심 있을 만한 포스트

0개의 댓글