실현의 "데이터 구조 및 알고리즘"실험 4 보고서 // 빠른 정렬

룸 번호 10-414
이름 :
날짜 : 2018년 12월 27일
프로그램 이름 : 빠른 정렬
실험 : 실현 (D) 빠른 정렬

첫째, 목적과 요구 사항 (요구 분석) :

1, 큰 순서로부터 작은 퀵 알고리즘 데이터 시퀀스를 사용하여 임의의 입력 시퀀스 순서 데이터.
실험 개발 : 10.6 (a)와 비교 10.6 (b)의 성능을 제공합니다.

둘째, 기본 개념, 원리 및 설계 프로그램 설명 :

(상기 프로그램의 구조, 데이터 구조들, 입력 / 출력 디자인 심볼 이름 정보 등을 포함)
는 프로그램의 구조
(1) 헤더 파일
#INCLUDE <STDIO.H>
#INCLUDE <stdlib.h>
#DEFINE 100 MAX
함수 2. 함수
퀵 주요 기능은
(높은 INT, 로우 INT)을 퀵 무효화
3. 기본 기능
데이터 입력 인터페이스와 기능의 구현을 제공한다.
셋째, 프로그램의 아이디어
세트는 정렬 된 어레이가있다 수 [0] ... A는 [N은 -1, 키 데이터로서 제 1 데이터 (제는 통상 어레이 선택된다) 중 하나를 선택하고 그 모두의 수보다 적은 의 수보다 모두 큰 그것의 앞에,에 위치는 뒤에 빠른 정렬 여행이라는 프로세스를 배치됩니다. 그것은 빠른 정렬 알고리즘을 정렬 안정적 즉, 값이 상기 복수의 동일한 상대 위치를 알고리즘의 끝에서 변동될 수없고, 주목할 만하다.
: 퀵 알고리즘 트립
난, j는, 순서의 시작 시간이 1) 집합 개의 변수 : I = 0 일을 J = N-1,
2) 키에 할당 된 키 데이터와 제 배열 요소로, 즉 = 키 [0]
. 3), 즉, 전면 (J-)로부터 탐색 개시 후, 최초의 키는 이하의 값이 [J], 지정된 A [J] 값보다 찾을 순방향 검색 J부터 A [I]
. 4) I를 역방향 탐색의 시작 전에, 즉 후방 검색 개시로부터는 (ⅰ ++)는 A를 찾기 위해 제 1 키보다 크다 [I]은이 [I]은 [J]의 값을 할당 ;
에서는 키 이상인 (3,4- 공정과, 정규화 된 값을 찾지 못함, 즉 3 A [J] 4 A가 [I]은 시간 키보다 크지 5)를 반복하여 3 단계, 4 나 일본을 =까지. 만약 때 대한 교환, J 포인터 위치 변경있다. 또한, I == J 즉, 정규화 된 값을 발견 찾을 때까지 변화 J, I의 값은 즉, J = J-1 난 + 1 = 과정은 정확히 시간을해야합니다 내가 + J- 또는 완료, 그래서이 시간주기의 끝 부분)에서.

셋째, 디버깅 과정에서 생성 된 프로그램을 실행하고 조치를 취해 문제 :

	调试过程中还是出现了一些拼写错误,经检查后都能及时修正。有些是语法设计上的小错误,比如一些参变量的初始值设置错误,使得程序调试出错。分析后纠正了这些结果,并尽量改进了算法的性能,减小时间复杂度。 

이 실험, 빠른 종류의 저장 방법에 깊은 인상을 통해.

넷째, 소스 코드 및 설명 :

#include <stdio.h>  
#include <stdlib.h>  
#define MAX 100  
int a[MAX + 1];
int n;  
//--------------------------------快速排序函数------------------------------- 
void QuickSort(int low, int high)  
{  
    	int i,j,t,temp;  
    	if(low>high)  
    		return;  
    	temp=a[low];  
    	i=low;  
   	 	j=high;  
    	while(i!=j)  
    	{  
        	while(a[j]>= temp&&i<j)  
        	{	  
            	j--;  
        	}  
        	while(a[i]<=temp&&i<j)  
        	{  
            	i++;  
        	}  
        	if(i<j)  //交换a[i]和a[j] 
        	{  
            	t=a[i];  
            	a[i]=a[j];  
            	a[j]=t;  
        	}  
    	}  
    	a[low]=a[i];  
    	a[i]=temp;  
    	QuickSort(low,i-1);  
    	QuickSort(i+1,high);  
}  

//--------------------------------主函数------------------------------- 
int main()  
{  
		printf("\t\t\t-----------------------------------\n");
    	printf("\t\t\t---------程序名:快速排序---------\n");  
    	int i,j,t,count=0;  
    	int N;  
    	printf("\t\t\t请输入数据的个数:\n\t\t\t");  
    	scanf("%d",&N);  
    	printf("\t\t\t");
    	for(i=0;i<N;i++)  
    	{  
        	scanf("%d",&a[i]);  
             
    	}  
    	QuickSort(0,i-1);  //调用快速排序函数 
    	printf("\t\t\t排序后的数据:\n\t\t\t");  
    	for(j=0;j<i;j++)  
    	{  
        	printf("%d ",a[j]);  
    	}  
    	printf("\n"); 
    	printf("\t\t\t-----------------------------------\n");
    	return 0;  
}  

6.3.5 운영 출력 :

输入10个无序的数据,调用快速排序函数进行从小到大的排序 

그림 삽입 설명 여기

여섯째, 아이디어와 경험 :

게시 35 개 원래 기사 · 원 찬양 한 · 전망 1861

추천

출처blog.csdn.net/qq_40672635/article/details/90049984