"Estructuras de Datos y Algoritmos" Experimento 4 del informe // tipo de realización rápida

Habitación No. 10-414
Nombre:
Fecha: 12/27/2018
Nombre del programa: la clasificación rápida
Experimento: realize (D) rápido Ordenado

En primer lugar, la finalidad y los requisitos (análisis de necesidades):

1, un conjunto de datos de entrada de orden de secuencia arbitraria, utilizando la secuencia de datos algoritmo Quicksort de pequeño a gran pedido.
Desarrollo experimental: 10.6 (a) y 10.6 rendimiento (b) para la comparación.

En segundo lugar, la básica ideas, principios y programa de diseño Descripción:

(Incluyendo la estructura del programa, estructuras de datos, entrada / salida de diseño, Nombre simbólico Descripción etc.)
una estructura de programa
1. El archivo de cabecera
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
la función 2. Función
quicksort función principal
anular la ordenación rápida (int baja, alta int)
3. la función principal
de proporcionar la interfaz de entrada de datos y la implementación de la función.
En tercer lugar, la idea del programa
conjunto sea matriz ordenada es A [0] ...... A [N -1], seleccionar cualquiera de unos primeros datos (el primer número se elige generalmente array) como los datos de clave, entonces es más pequeño que el número de todos se colocan delante de él, todo más grande que su número se ponen detrás de él, un proceso conocido como un viaje a ordenación rápida. Es de destacar que, rápida tipo no es un estable algoritmo de clasificación, es decir, las mismas posiciones relativas de la pluralidad de valores pueden fluctuar al final del algoritmo.
Trip algoritmo Quicksort:
1) Aparato de dos variables i, j, la hora de inicio del pedido: i = 0, J = N-1;
2) para el primer elemento de matriz como los datos de clave, asignado a la tecla, es decir, = una tecla [0];
. 3) buscar hacia delante a partir de j, es decir, después del inicio de la búsqueda de la parte delantera (J-), encontrar la primera clave es menor que el valor de una [j], el valor de una [j] asignado a [i];
. 4) i del revés principio de búsqueda, es decir, antes del inicio de la búsqueda hacia atrás (i ++), es mayor que una primera clave para encontrar el a [i], el a [i] se le asigna el valor de a [j] ;
5) Repetir los pasos 3 y 4 hasta i = j; (3,4 paso, no encontró valor cualificado, es decir, 3 A [j] no es menos de la llave, en 4 A [i] no es mayor que la tecla de tiempo. j cambiar, el valor de i tal que j = j-1, i = i + 1, hasta que encuentre el valor encontrado cualificado, cuando el cambio de i, j posición del puntero sin cambios. Además, i == j que proceso debe ser exactamente el tiempo i + J o completado, por lo que en este momento el final del ciclo).

En tercer lugar, el problema de la depuración y programas generados en el proceso de ejecución y las medidas adoptadas:

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

A través de este experimento, una impresión más profunda del método de almacenamiento de tipo rápido.

En cuarto lugar, el código fuente y comentarios:

#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 salida de funcionamiento:

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

Aquí Insertar imagen Descripción

En sexto lugar, las ideas y la experiencia:

Publicado 35 artículos originales · ganado elogios 1 · vistas 1861

Supongo que te gusta

Origin blog.csdn.net/qq_40672635/article/details/90049984
Recomendado
Clasificación