5. 정렬 알고리즘 의 간단 한 알고리즘 인 거품 정렬, 간단 한 정렬 선택 과 직접 정렬 삽입

2084 단어 데이터 구조
쓸데없는 말 은 그만 하고 먼저 우스갯소리 를 하 자.
최근 의 국제 정 세 는 이와 같다. 미 제 는 학교 가 끝나 면 가지 말 라 고 소 리 쳤 다.
우크라이나 가 소 리 쳤 다.
유럽 연합 은 수업 이 끝나 면 시작 하 라 고 소 리 쳤 다.!
보 대 제 는 학교 가 파 했 구나, 도대체 나 를 때 릴 거 야, 안 때 릴 거 야? 라 고 차 갑 게 말 했다.
본론 에 들 어가 면 알고리즘 을 배 울 때 정렬 을 언급 하지 않 을 수 없습니다. 정렬 알고리즘 은 주로 간단 한 알고리즘 과 개선 알고리즘 으로 나 눌 수 있 습 니 다. 전 자 는 주로 거품 정렬, 간단 한 선택 정렬 과 직접 삽입 정렬 이 있 습 니 다.후 자 는 주로 힐 정렬 (직접 삽입 정렬 개선), 쌓 기 정렬 (간단 한 선택 정렬 개선), 병합 정렬 (셀 프 정렬 개선) 과 빠 른 정렬 (셀 프 거품 정렬 개선) 이 있 습 니 다.
다음은 제 가 C + + 로 쓴 간단 한 정렬 알고리즘 입 니 다. 여러분, 지 켜 보 세 요.
#include 

using namespace std;
const int maxSize  = 10;//         

//               
struct myList
{
	int r[maxSize];
	int length;
};

//           
void swap(myList *L, int i, int j)
{
	int temp = L->r[i];
	L->r[i] = L->r[j];
	L->r[j] = temp;
}

//          
void bubbleSort(myList *L)
{
	int i(0),j(0);
	bool flag = true;
	for (i = 0; i < L->length && flag; i++)
	{
		flag = false;
		for (j = (L->length - 2); j >= i; j--)
		{
			if (L->r[j] > L->r[j+1])
			{
				swap(L,j,j+1);
				flag = true;
			}
		}
	}
}

//          
void simpleChooseSort(myList *L)
{
	int i(0),j(0);
	int min;
	for ( i = 0; i < L->length; i++)
	{
		min = i;
		for (j = i +1; j < L->length; j++)
		{
			if (L->r[j] < L->r[min])
			{
				min = j;
			}
		}
		if (min != i)
		{
			swap(L,i,min);
		}
	}
}

//          
void directInsertSort(myList *L)
{
	int i(0),j(0);
	for ( i = 0;i < (L->length - 1); i++)
	{
		if (L->r[i+1] < L->r[i])
		{
			int temp = L->r[i+1];
			for (j = i; L->r[j] > temp; j--)
			{
				L->r[j+1] = L->r[j];
			}
			L->r[j + 1] = temp;
		}
	}
}

//       
int main()
{
	//        
	myList *myL = new myList;
	myL->length = 9;
	for (int i = 0; i < myL->length; i++)
	{
		int temp(0);
		cout<>temp;
		myL->r[i] = temp;
	}
	//        
	//bubbleSort(myL);//    
	//simpleChooseSort(myL);//      
	directInsertSort(myL);//      
	//      
	cout<length; i++)
	{
		cout<r[i]<

좋은 웹페이지 즐겨찾기