>  기사  >  백엔드 개발  >  3분 안에 선택 정렬과 버블 정렬을 사용하는 방법을 알아보세요.

3분 안에 선택 정렬과 버블 정렬을 사용하는 방법을 알아보세요.

烟雨青岚
烟雨青岚앞으로
2020-07-03 11:29:422960검색

3분 안에 선택 정렬과 버블 정렬을 사용하는 방법을 알아보세요.

오늘은 C 언어, 선택 정렬, 버블 정렬에 대한 몇 가지 알고리즘을 공유하겠습니다.

선택 정렬을 위해서는 먼저 정렬의 개념을 이해하세요. 배열이 주어지면 이 아이디어는 먼저 배열의 첫 번째 요소가 가장 크거나 작다고 가정합니다. 이때 요소의 첨자를 표현하기 위해 3개의 변수를 사용하게 된다.

하나는 현재 상황을 나타내고, 하나는 발견된 최대 또는 최소 첨자를 나타내며, 다른 하나는 각 루프에서 최대값의 첨자를 저장하는 데 사용됩니다. 프로그램의 기본 아이디어를 숙지한 후 시퀀싱을 진행합니다. 가장 큰 첨자를 찾은 후 매번을 제외하고 가장 큰 첨자에 할당합니다.

찾은 후 가정된 현재 값이 이 사이클의 최대값인지 판단합니다. 그렇지 않으면 최대값을 현재 값과 교환하여 특정 순서로 배열을 정렬하고 마지막으로 결과를 출력하는 루프를 작성합니다. .

코드는 어렵지 않으니 차근차근 설명해드리겠습니다. 이해가 안 되시면 메시지 남겨주시면 설명드리겠습니다. , 수정하겠습니다.

#include<stdio.h>
void main()//主函数
{
   int a[10];
   int i,j,w;
   printf("请输入10个数字: \n");
    for(i=0;i<10;i++)
   scanf("%d",&a[i]);
    for(i=0;i<10;i++)
{
     for(j=0;j<10;j++)
     if(a[i]<a[j])//进行比较
//比较后进行交换
{
  w=a[i];
         a[i]=a[j];
           a[j]=w;
}
  }
printf("排序后:\n");
        for(i=0;i<10;i++)
            printf("%4d",a[i]);
              printf("\n");
}

결과 표시:

3분 안에 선택 정렬과 버블 정렬을 사용하는 방법을 알아보세요.

다음은 버블 정렬입니다. 이는 C 언어에서 가장 일반적으로 사용되는 알고리즘 중 하나입니다. 이해하기 쉽기 때문입니다. 대부분의 사람들은 정렬을 원할 때 먼저 수행합니다. 사용되는 알고리즘입니다. 이 알고리즘은 비교적 이해하기 쉽습니다.

버블 정렬의 주요 아이디어는 인접한 숫자를 쌍으로 비교하는 것입니다. 후자가 이전 것보다 크거나 작다면 모든 숫자가 비교될 때까지 위치를 바꿉니다.

크기 n의 배열이 주어지면 n-1번 비교해야 하며, n-1-i번 비교할 때마다 i는 마지막 루프에서 비교된 첨자를 나타냅니다. 두 개의 루프 판단을 작성하고 교환이 필요하면 교환하고 모든 숫자가 비교될 때까지 다음 두 숫자를 비교합니다.

마지막으로 루프를 사용하여 정렬된 모든 숫자를 출력합니다. 코드는 다음과 같습니다.

#include<stdio.h>
#define N 10
void main()
{
   int a[10];
   int i,j,t;
   printf("请输入10个数字: \n");
    for(i=0;i<10;i++)
   scanf("%d",&a[i]);
//使用两层循环
    for(i=0;i<N-1;i++)
{
     for(j=i+1;j<N-(i+1);j++)
     if(a[j]<a[j+1])//比较大小
{
  t=a[j];
         a[j]=a[j+1];
           a[j+1]=t;
}
}
printf("排序后:\n");
        for(i=0;i<10;i++)
            printf("%4d",a[i]);
              printf("\n");
}

결과:

3분 안에 선택 정렬과 버블 정렬을 사용하는 방법을 알아보세요.

결론:

선택 정렬의 분석은 배열 요소에 따라 매우 간단합니다. 값 비교 A[j]

따라서 선택 정렬은 모든 입력에 대해 O(n^2) 알고리즘입니다. 따라서 본 실험의 시간복잡도는 O(100), 공간복잡도는 O(10)이다. 그러나 키가 교환되는 횟수는 O(n), 더 정확하게는 n-1회입니다(i 루프가 반복될 때마다 한 번의 교환이 수행됩니다).

이 기능은 선택 정렬을 다른 많은 정렬 알고리즘보다 우수하게 만듭니다.

버블 정렬은 인접한 두 숫자를 비교하여 더 큰 숫자가 아래로 가라앉거나(또는 작은 숫자가 떠오름) 총 n-1개의 비교 및 ​​교환이 수행되는 과정입니다.

알고리즘의 구현을 용이하게 하기 위해 위의 버블 알고리즘은 10개의 정수 데이터를 저장하기 위해 1차원 배열만 사용하는 것으로 간주됩니다. 정렬 프로세스 동안 데이터는 항상 이 배열에 있습니다(제자리에서 작동하며 추가 공간을 차지하지 않음). 따라서 이 알고리즘의 시간 복잡도는 O(n-1)이고 공간 복잡도는 O(1)입니다.

읽어주신 모든 분들께 감사드리며, 많은 도움이 되셨으면 좋겠습니다.

이 기사는 다음에서 복제되었습니다: https://blog.csdn.net/zjy18886018024/article/details/80718713

권장 튜토리얼: "C Language"

위 내용은 3분 안에 선택 정렬과 버블 정렬을 사용하는 방법을 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제