[JAVA] 거품 서열 이 뭐야? -면접 가산 점 문제
3211 단어 자바
글 은 중국 에서 기원 되 었 고 프로그래머 재 에서 전재 되 었 다.만화: 거품 서열 이란 무엇 인가?
거품 정렬 1 판
public class BubbleSort {
private static void sort(int array[])
{
int tmp = 0;
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array.length - i - 1; j++)
{
if(array[j] > array[j+1])
{
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
}
public static void main(String[] args){
int[] array = new int[]{5,8,6,3,9,2,1,7};
sort(array);
System.out.println(Arrays.toString(array));
}
}
두 순환 으로 정렬 합 니 다.외부 순환 은 모든 라 운 드 를 제어 하고 내부 순환 은 모든 라운드 의 거품 처 리 를 대표 하 며 먼저 요 소 를 비교 한 다음 에 요소 교환 을 한다.
문제: 꼴찌 3 라운드 때 는 이미 순서 가 있 으 니 더 이상 정렬 할 필요 가 없습니다!
거품 정렬 2 판
public class BubbleSort {
private static void sort(int array[])
{
int tmp = 0;
for(int i = 0; i < array.length; i++)
{
// , true
boolean isSorted = true;
for(int j = 0; j < array.length - i - 1; j++)
{
if(array[j] > array[j+1])
{
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
// , , false
isSorted = false;
}
}
if(isSorted){
break;
}
}
}
public static void main(String[] args){
int[] array = new int[]{5,8,6,3,9,2,1,7};
sort(array);
System.out.println(Arrays.toString(array));
}
}
이 코드 는 불 변수 isSorted 를 사용 하여 작은 변경 을 했 습 니 다.이 라운드 정렬 에서 요소 가 교환 되면 수열 이 무질서 하 다 는 것 을 설명 합 니 다.원소 교환 이 없 으 면 수열 이 이미 질서 가 있다 는 것 을 설명 하고, 바로 큰 순환 에서 튀 어 나온다.
문제: 만약 후반 부 원소 가 이미 질서 가 있다 면 매 라운드 마다 헛되이 비교 해 야 한다.
거품 정렬 3 판
매 라운드 정렬 의 마지막 에 마지막 요소 교환 위 치 를 기록 합 니 다. 그 위 치 는 바로 무질서 수열 의 경계 이 고 그 다음은 질서 있 는 구역 입 니 다.
이 코드 에서 sortBorder 는 무질서 한 수열 의 경계 입 니 다.매 라운드 정렬 과정 에서 sortBorder 이후 의 요 소 는 비교 할 필요 가 없고 질서 가 있 을 것 입 니 다.
public class BubbleSort {
private static void sort(int array[])
{
int tmp = 0;
//
int lastExchangeIndex = 0;
// ,
int sortBorder = array.length - 1;
for(int i = 0; i < array.length; i++)
{
// , true
boolean isSorted = true;
for(int j = 0; j < sortBorder; j++)
{
if(array[j] > array[j+1])
{
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
// , , false
isSorted = false;
//
lastExchangeIndex = j;
}
}
sortBorder = lastExchangeIndex;
if(isSorted){
break;
}
}
}
public static void main(String[] args){
int[] array = new int[]{3,4,2,1,5,6,7,8};
sort(array);
System.out.println(Arrays.toString(array));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.