검지 Offer - 정렬: 빠 른 정렬
6822 단어 검지 제공필기시험.프로 그래 밍 문제
쾌속 열 을 실현 하 다.
링크:
검지 제공 (제2판): P80
아이디어 태그:
알고리즘: 귀속
해답:
1. C++
void swap(int* data, int i, int j){
if(i == j) return;
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
//
int partition(int data[], int length, int start, int end){
if(data == nullptr || length <= 0 || start < 0 || end >= length)
throw new std::exception("Invalid Parameter");
int index = rand() % (end - start + 1) + start; //
swap(data, index, end);
int small = start - 1;
for(index = start; index < end; ++index){
if(data[index] < data[end]){
++small;
if(small != index)
swap(data, small, index);
}
}
++small;
swap(data, small, end);
return small;
}
void quickSort(int data[], int length, int start, int end){
if(start == end) return;
int index = partition(data, length, start, end);
if(index > start)
quickSort(data, length, start, index-1);
if(index < end)
quickSort(data, length, index+1, end);
}
2. python
def quick_sort(lists, left, right):
#
if left >= right:
return lists
key = lists[left]
low = left
high = right
while left < right:
while left < right and lists[right] >= key:
right -= 1
lists[left] = lists[right]
while left < right and lists[left] <= key:
left += 1
lists[right] = lists[left]
lists[right] = key
quick_sort(lists, low, left - 1)
quick_sort(lists, left + 1, high)
return lists
정렬 관련
python:
동적 그림:
기타 관련 문제
제목: 회사원 연령 서열
수만 명의 직원 이 정렬 알고리즘 을 실현 하고 시간 효율 O (n) 를 요구 하 며 상수 크기 의 보조 공간 을 사용 할 수 있 으 며 O (n) 를 초과 하지 않 습 니 다.연령 대 는 0 ~ 99 사이 다.
분석:
void sortAges(int ages[], int length){
if(ages == nullptr || length <= 0) return;
const int oldestAge = 99;
int timesOfAge[oldestAge + 1];
for(int i=0; i<=oldestAge; ++i)
timesOfAge[i] = 0;
for(int i=0; iint age = ages[i];
if(age < 0 || age > oldestAge)
throw new std::exception("Age of out range!");
++timesOfAge[age];
}
int index = 0;
for(int i=0; i<=oldestAge; ++i){
for(int j=0; j
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
\ # 데이터 구조 와 알고리즘 학습 노트 \ # 검 지 제공 42: 단어 순 서 를 뒤 집기 + 테스트 사례 (자바, C / C +)2019.1.2 검 지 Offer 는 제로 브러시 개인 노트 정리 (66 문제 전) 디 렉 터 리 전송 문 에서 인터넷 에 서 는 원 서 를 포함 한 많은 방법 이 문장 을 두 번 뒤 집 는 것 이다. 첫 번...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.