Universidad de Zhejiang Chen Yue estructura de datos Conferencia: Conceptos básicos


La primera conferencia los conceptos básicos

¿Qué es una estructura de datos

Estructuras de Datos y Algoritmos

Ejemplo 1. El libro de las estanterías

Libro coloca a realizar dos operaciones conexas para facilitar el logro:
1. nuevo libro cómo inserción (casualmente palabras, de acuerdo a la opción de venta fonética, puesto por categoría + orden alfabético)
2. cómo encontrar algo de este libro específico (agotado, búsqueda binaria)

Resumen: Cuando se le preguntó cómo una organización de datos, de hecho, con el tamaño de los datos de una relación
no es la misma escala del problema, la dificultad de tratar con ellos no es lo mismo, para resolver la eficiencia del proceso, con la organización de los datos tiene. Shut

Ejemplo 2. Escribir una función, introduzca un número entero positivo de N, el orden de impresión de todos los números enteros positivos de 1-N.

Un primer método para el bucle

La segunda recursión

Resumen: A pesar de la repetición simple, pero la ocupación del espacio recursividad muy alarmante, cuando N es 100000, la redacción de la utilización del espacio recursivo se contabilizan, no es suficiente, entonces explota, causando la terminación anormal. método eficiente para resolver el problema también está relacionada con la eficiencia de utilización del espacio.

Ejemplo 3. Escribir un valor calculado para el punto dado en el polinomio de x

El primer método traduce directamente polinomio (simple y crudo directamente)

El segundo uso de la ley para simplificar el polinomio re-traducción

Cómo probar el tiempo de ejecución del programa de
reloj () Función: proceso de captura de principio a correr el reloj () se llama cuando pasó el tiempo, el tiempo de garrapata Colock, que es el tiempo RBI
CLK_TCK constante: Reloj de puntos por segundo intento reloj de la máquina golpeó

#include<stdio.h>
#include<time.h>//调用clock函数需要的头文件

clock_t start,stop;//clock_t是clock函数返回的变量类型
double duration;
int mian()
{
    start=clock();//开始计时
    myfuncation();//把被测函数加在这里
    stop=clock();//停止计时
    duration=((douboe)(stop-star))/CLK_TCK;
    //得出运行时间
    
}

Cuando el tiempo de ejecución es demasiado corto menos de 1 unidad, tomamos repetimos, y, finalmente, dividido por el número de veces que la palabra vienen tiempo de ejecución

Resumen: El primer método de tiempo de un orden de magnitud a funcionar más despacio que el segundo enfoque de resolución de problemas de eficiencia, con algoritmos inteligentes título relacionado.

Al final lo que es una estructura de datos?

  • Los objetos de datos se organizan en el ordenador
  • Estructura lógica (uno: muchos estructura lineal: many-Tree: la fig.)
  • Estructura física de almacenamiento (lista enlazada, una matriz, etc.)
  • Debe ser aplicado con el objeto de datos en la que una serie de operaciones asociadas
  • Estas operaciones completan el método utilizado fue el algoritmo
  • Resumen de datos de tipo
  • Tipos de datos
    • Conjunto de objetos de datos
    • datos de operación conjunto asociado con un conjunto
  • Resumen: Descripción de los tipos de datos de aplicación específica no se basa
    • Independientemente de la máquina para almacenar datos
    • Independientemente de la estructura física de la memoria de datos
    • Y algoritmos de programación y operaciones no están relacionados

Descripción único conjunto de objetos de datos y las operaciones conexas establece lo que no implica cómo hacer el problema

Resumen: El resumen es, relativamente claro que sabe este tipo de datos está haciendo, ¿cuál es el uso, no lo hacen enredo con lo que el lenguaje, lo hacen tipo de datos no enredo, lo que le permite entender con mayor claridad esta estructura de datos, tales como funciones max (), que usarla cuando se sabe que es encontrar el máximo de dos números, usted no tiene que enredarse su tipo de datos, y sin darse cuenta enredada en qué idioma, la forma más sencilla es la razón más importante: Interfaz y la separación! Reutilización más fuerte!

¿Cuál es el algoritmo

  • algoritmo
  • Un conjunto finito de instrucciones
  • Aceptar alguna entrada (en algunos casos necesitan para entrar)
  • Generar una salida
  • Terminado después de ciertas medidas limitadas
  • Cada uno debe instrucción
    • Hay objetivos suficientemente claros. no ambigua
    • Dentro del ámbito del equipo puede manejar
    • La descripción no debe depender de ningún tipo de lenguaje de programación y los medios específicos de lograr

¿Qué es un buen algoritmo

  • complejidad espacio S (n)
  • Complejidad de tiempo T (n)

Ejemplo: PRINT N Recursive

Cuando n es suficientemente grande, el espacio será cubierto
por la huella de bucle es siempre una constante

  • Al analizar la eficiencia de los algoritmos en general, a menudo nos centramos en dos complejidad
  • En el peor caso
  • complejidad media

La complejidad de la representación progresiva

Algoritmo no hacer un muy buen análisis de
una estimación aproximada de la tendencia de crecimiento

consejos análisis de complejidad

  • Complejidad sacar el máximo
  • para la complejidad del tiempo de ciclo es igual al número de ciclos * complejidad del código cuerpo del bucle
  • La complejidad de la estructura depende de si otra persona si la condición es determinada complejidad y la complejidad tanto de las partes de pata, complejidad general, el que sea más grande

Ejemplos de aplicación: una hilera máximo y el niño problema

在线处理 ,灵活巧妙,简化问题+找规律 
#include<bits/stdc++.h>//最大数据10的5次方时21ms 
using namespace std;
int num[100000];
int maxn=0;
int main()
{
	int n=0,sum=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
		maxn=maxn+num[i];
		if(maxn<0)
		{
			maxn=0;
		}
		if(maxn>sum)
		{
			sum=maxn;
		}
		//printf("%d",sum);
	}
	if(sum<0)
	{
		printf("0");
	 } else
	printf("%d",sum);
	return 0;
 } 
#include<bits/stdc++.h>//最大数据10的5次方时3700ms 爆力法 
using namespace std;
int num[100000];
int maxn=0;
int main()
{
	int n=0,sum=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
	}
	for(int i=0;i<n;i++)
	{
		maxn=0;
		for(int j=i;j<n;j++)
		{
			maxn=maxn+num[j];
			if(maxn>sum)
			{
				sum=maxn;
			}
		}
	}
	if(sum<0)
	{
		printf("0");
	 } else
	printf("%d",sum);
	return 0;
} 
#include<bits/stdc++.h>//最大数据10的5次方时3700ms .分而治之 
略
Publicó un artículo original · ganado elogios 0 · Vistas 13

Supongo que te gusta

Origin blog.csdn.net/qq_45090427/article/details/105012520
Recomendado
Clasificación