/ / 1 차원 배열의 버블 정렬 : 알고리즘, C 프로그램 코드

1 차원 배열의 버블 정렬 : 알고리즘, C 언어로 된 프로그램 코드

가장 유익한 정보로 작업 할 때그것을 저장하는 방법은 구조체와 배열입니다. 후자는 프로그램의 작업에서 사용하기 편리한 임의의 한 유형의 데이터를 포함 할 수 있습니다. 그들은 종종 온라인 상점 및 게임 개발에 사용됩니다. 따라서 이들에 포함 된 데이터는 반복적으로 정렬되고 스왑되며 논리적 또는 수학적 연산이 수행됩니다. 배열에 순서를 지정하는 한 가지 방법은 버블 정렬입니다. 이 간행물은 C 코드와 순열 논리를 연구합니다.

배열 정렬 알고리즘

프로그래머의 기술적 어려움1 차원 배열의 버블 정렬은 그 효율성이 낮기 때문에 거의 사용되지는 않지만 표현되지 않습니다. 훈련 단계에서 가장 단순한 것으로 간주되는 경우가 더 빈번합니다. 그러나, 그것은 가장 효과적이지 못합니다. 알고리즘은 조건이 충족 될 때 숫자와 상호 겹쳐 쓰는 셀을 교대로 비교하는 것으로 구성됩니다.

기포 선별

단계별 정렬 설명

첫 번째 반복에서 두이웃 번호. 왼쪽이 더 큰 경우 올바른 위치로 다시 작성됩니다. 마이너스 8과 0은 조건이 만족하지 않습니다. 그것이 그들이 장소에서 변화하지 않는 이유입니다. 0과 5도 맞지 않습니다. 5 및 3이 적합하다. 그러나이 반복에서 읽기 프레임은 상위 5 개에 속하지 않지만 오른쪽으로 이동합니다. 그 이전의 5 개는 0과 비교 되었기 때문입니다. 즉, 다음 쌍인 3과 9가 자리를 바꾼다는 의미입니다. 그러면 독자는 작성자의 설명없이 독자적으로 모든 대체본을 검토하고 거품 정렬 알고리즘을 연구하도록 제안됩니다.

버블 정렬 알고리즘

모든 반복의 결과로서, 배열은 점차적으로큰 양수는 오른쪽으로 빨리 이동하지만 작은 것과 음수는 천천히 왼쪽으로 이동합니다. 액체의 가스 방울이 빨리 상승하는 것처럼 보입니다. 이 비유로 인해이 알고리즘을 거품 정렬이라고 부릅니다.

계산 복잡도의 추정

이상적인 정렬 알고리즘은 다음과 같아야합니다.가능한 한 빨리 동시에 소량의 CPU 및 메모리 리소스를 차지해야합니다. 버블 정렬과 같은 과정은 에너지 효율이 높고 수익성이 떨어지지는 않습니다. 폭 넓은 적용 때문에 그는 찾지 못했습니다. 현재 메모리 문제가 적 으면 프로세서 리소스가 걱정됩니다. 디지털 배열은 크기가 크지 만 거대하지 않을 수 있기 때문에 컴퓨터 자원의 소비는 예측할 수 없게됩니다.

거품 정렬이 원칙적으로 빠르다면상대적으로 작은 배열로 질서를 형성하는 것에 대처하면, 많은 경우 자원의 과다 지출로 인한 실패가있을 수 있습니다. 이것은 알고리즘에 내재 된 보편성 속성이 위반된다는 것을 의미합니다. 그리고 거품에 의한 분류는 N-square 복잡성을 가지고 있으며 N 복잡도의 대수와 매우 다릅니다. 또한 대형 배열을 처리하지 못할 경우 셀을 덮어 쓰기 때문에 데이터가 손실 될 가능성이 높아집니다. 이 점에서 훨씬 더 수익성이 높은 것은 삽입 정렬 또는 쉘 알고리즘입니다.

소프트웨어 코드

다음은 그래픽 응용 프로그램에 있습니다.C 언어의 컴퓨터 코드를 사용하면 거품 정렬을 수행 할 수 있습니다. void 유형의 별도 함수로 렌더링됩니다. 값을 반환하지는 않지만 포인터를 사용하면 정렬 조건에 따라 요소가 서로 바뀝니다. 이 경우 코드는 정수 배열을 오름차순으로 버블 정렬하는 문제를 해결합니다.

버블 정렬 알고리즘

이 기능을 수행하려면 사용자가원하는 값으로 채워야하는 배열을 만듭니다. 이는 프로그램 시작시 치수와 요소 수를 설정하여 수동으로 수행 할 수 있습니다. 그런 다음 상수 값으로 배열을 채울 수 있습니다. 두 번째 옵션은 100 요소의 1 차원 배열을 선언하여 범용 프로그램을 작성하는 것입니다.

배열 선언 및 초기화

정수 변수 할당 및 할당키보드에서 읽은 값으로 채울 셀 수를 제한 할 수 있습니다. scanf 함수 ( "% d", & value)를 사용하여 사용자가 키보드에서 배열 요소를 입력하는 기능을 구현할 수도 있습니다. 이 예제에서 "% d"은 검사 후 정수 값이 수신 될 것임을 컴파일러에 알려주는 수정 문자열입니다. 변수 값은 1 차원 정수 배열의 크기 값을 저장합니다.

정렬 알고리즘을 사용하려면함수에서 배열의 이름과 크기를 전달합니다. 그래픽 응용 프로그램에 표시된 상황에서 sort 함수를 호출하면 BubleSort (dataArray, sizeDataArray)와 같은 모양이됩니다. 물론, 함수의 끝 부분에 프로그램의 구문 규칙에 따라 마침표 대신 세미콜론을 넣어야합니다. 따라서 dataArray는 정렬 할 배열의 이름이고 sizeDataArray는 크기입니다.

기포 배열 정렬

이러한 매개 변수를 BubleSort () 함수에 전달합니다.그림에서 알 수 있듯이 sizeArray를 사용하는 대신 실제 프로그램에서 sizeDataArray를 사용하여 연산을 수행합니다. 이것은 또한 BubleSort () 함수가 integer dataArray를 사용할 것임을 의미합니다. 마찬가지로 printArrayFunction () 및 ArrayIntegerInputFunction () 함수가 호출됩니다. 첫 번째 요소는 인쇄 작업, 즉 요소의 콘솔에 출력 작업을 담당합니다. 두 번째는 사용자가 키보드에서 입력 한 요소로 채우는 데 필요합니다.

격리 된 경우의 프로그래밍 스타일작업은 기능의 형태로 수행되며 코드의 가독성을 크게 높이고 개발 속도를 가속화합니다. 이러한 프로그램에서 배열은 키보드와 별도로 채워지고 인쇄되며 버블 정렬 자체가됩니다. 후자는 데이터를 구성하거나 배열의 최소 및 최대를 찾기 위해 고안된 보조 기능으로 사용될 수 있습니다.

삽입 정렬

삽입 메소드로 정렬 할 때각 요소를 교대로 비교하고 조건에 따라 이미 정렬 된 항목의 체인을 구성합니다. 결과적으로 각 후속 비교의 결과는 새 값을 배치 할 수있는 셀을 검색하는 것입니다. 그러나 각각의 삽입은 배열의 이미 정렬 된 부분에서 수행됩니다.

버블 정렬 삽입

이러한 프로세싱은 더 빠르며 계산 복잡성이 적습니다. C 코드는 그래픽 응용 프로그램에 표시됩니다.

기포 선별을 수행하다

그것은 또한 다음과 같은 함수 형태로 표현됩니다.인수로 배열되어야하는 배열의 이름과 배열의 크기가 전달됩니다. 여기서 거품 정렬이 얼마나 느린 지 알 수 있습니다. 삽입물 비슷한 작업은 훨씬 빠르고 코드가 작습니다.

더 읽기 :