빠 른 배열 에서 partition 함수 최적화
/ / arr [] 는 배열 이 고 start, end 는 각각 배열 의 첫 번 째 요소 와 마지막 요소 의 색인 이다.
// index , Arr[index] , Arr[index]
int partition( int Arr[], int start, int end, int pivotIndex ) //pivotIndex
{
int pivot = Arr[pivotIndex];
swap( Arr[pivotIndex], Arr[end]); //exchange the pivot and the last element
int indexStore = start;
for( int i = start; i < end; i++ )
{
if( Arr[i] < pivot )
{
swap( Arr[indexStore], Arr[i] );
indexStore ++;
}
}
swap( Arr[indexStore], Arr[end] );
return indexStore;
}
이것 은 빠 른 배열 프로그램 으로 스스로 두 드 린 것 으로 매우 간결 하 다.
/*****************************
@data:2015/7/1
@author:lss
@function:fast sort by using partition funtion
******************************/
#include <stdio.h>
#include <iostream>
using namespace std;
void swap( int &a, int &b ){ //
int tmp = a;
a = b;
b = tmp;
}
// index , Arr[index] , Arr[index]
int partition( int Arr[], int start, int end, int pivotIndex ) //pivotIndex
{
int pivot = Arr[pivotIndex];
swap( Arr[pivotIndex], Arr[end]); //exchange the pivot and the last element
int indexStore = start;
for( int i = start; i < end; i++ )
{
if( Arr[i] < pivot )
{
swap( Arr[indexStore], Arr[i] );
indexStore ++;
}
}
swap( Arr[indexStore], Arr[end] );
return indexStore;
}
void fastSort( int Arr[], int start, int end ){ //
if( start == end )
return;
int index = partition( Arr, start, end, start ); // index , 。
if( index > start )
fastSort(Arr, start, index-1 ); //left sort
if( index < end )
fastSort(Arr, index+1, end); //right sort
}
int main(){
int Arr[] = {3,2,4,7,4,56,1};
fastSort( Arr, 0, 6);
for(int i = 0 ; i <= 6; i++)
cout<<Arr[i]<<endl;
return 0;
}
이것 은 다른 쓰기 입 니 다. 많은 책 에 이렇게 쓰 여 있 을 것 입 니 다.
/******************************
*@data:2015/6/16
*@author:lss
*@function:
test sort_fast
**********************************/
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
void swap( int &x, int &y){ //swap funtion
int tmp = x;
x = y;
y = tmp;
}
void fastSort( int Arr[], int start, int end ){ //fast funtion
int pst = start;
int ped = end-1;
if( start == end && Arr == NULL)
return;
while( pst != ped ){
if( Arr[pst] >Arr[end] ){
swap( Arr[pst], Arr[ped]);
ped --;
}
else
pst ++;
}
swap( Arr[ped], Arr[end] ); //swap
fastSort( Arr, pst, ped-1 ); //left sort
fastSort( Arr, ped+1, end ); //left sort
}
int main(){ //main funtion
int
Arr[]={2,7,4,3,6};
fastSort( Arr, 0, 4);
for(int i = 0; i<4; i++)
cout<<i<<endl;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.