순환 정렬 알고리즘
7445 단어 sortingjavaalgorithms
전제 조건: 배열 요소는 1에서 배열 길이 사이여야 합니다.
Circular Sorting
에서 요소는 자연 색인에 배치됩니다.예:
if the array is [5,4,2,1,3] => [1,2,3,4,5]
class Solution {
public List<Integer> findDuplicates(int[] nums){
int i =0,n = nums.length;
while(i<n){
int j = nums[i]-1;
if(nums[i]!=nums[j]){
swap(nums,i,j);
}
else i++;
}
}
public void swap(int[] nums,int i ,int j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
용법:
예 : 배열의 요소가 범위
n
에 있는 길이0<=element<=n
의 배열에서 누락된 요소 찾기class Solution {
public int missingNumber(int[] nums) {
int i =0,n = nums.length;
// circular sorting
while(i<n){
int j = nums[i]-1;
if(j<0) {i++ ; continue;}
else if(nums[i]!=nums[j]) swap(nums,i,j);
else i++;
}
int missing = 0;
for(int k = 0;k<nums.length;k++){
if(k!=nums[k]-1){ missing = k+1; break;}
}
return missing;
}
public void swap(int[] nums,int i,int j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
Reference
이 문제에 관하여(순환 정렬 알고리즘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/prashantrmishra/circular-sorting-alorithm-29fl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)