algoritmo de aprendizaje: ordenación rápida

1. En la matriz desordenada, primero encontrar un número (por lo general para encontrar el elemento de matriz 0) como una clave de valor de referencia
2. al valor de referencia en el lado izquierdo de su más pequeño, más grande que el valor de referencia en su a la derecha (por lo tecla a la izquierda de lo que es pequeña, es grande que la derecha)
3. los datos de la izquierda de los métodos principales de usar el mismo tipo de datos clave a la derecha también utilizar el mismo método para clasificar, lo que es igual métodos: a recursivas

Pregunta: ¿Cómo hacer que poner una pequeña llave en la izquierda que en el lado derecho de la tecla grande?

1. El elemento 0 ª de la matriz asignado a la tecla (excavación)
2. Desde la derecha que a la izquierda para encontrar una pequeña llave delante del foso lleno (el pozo frente a los valores asignados se encuentran), a continuación, seguido de otro cavado una fosa.
3 mirando desde la izquierda a la derecha detrás de la llave es más grande que el orificio de llenado, pero esta vez frente a un agujero excavado
4. 2 ~ 3 pasos ciclo
5. Por último, un pozo lleno de clave

/*
	@brief: 快速排序函数
	@param:	int *a接收数组地址
	@param:	int left数组左边的下标
	@param:	int right数组右边一个下标
	@return 无返回值
*/
void quick_sort(int *a, int left, int right)
{
	int n = left;
	int m = right;
	int key = a[n];
	
	if(n >= m)
		return;
	while(n < m)
	{
		//从右边往左边找比key小的值
		while(n < m && a[m] >= key)
			m--;
		//如果找到了要填前面的坑
		if(n < m)
			a[n] = a[m];
		else
			break;
		//从左边往右边找比key大的值
		while(n < m && a[n] <= key)
			n++;
		//如果找到了要填后面的坑
		if(n < m)
			a[m] = a[n];
		else
			break;
	}
	//最后一个坑
	a[n] = key;	//a[m] = key;也可以因为最后一个坑的时候m == n
	//对key左边的部分排序
	quick_sort(a, left, n-1);
	//对key右边的部分排序
	quick_sort(a, n+1, right);
}
int main(void)
{
	int a[] = {9, 6, 2, 4, 6, 4, 0, 6, 2, 0};
	int n = 0;
	int m = sizeof(a)/sizeof(a[0]) - 1;	//m = 10 - 1;
	quick_sort(a, n, m);
	int i;
	for(i = 0; i < 10; i++)
		printf("%d ", a[i]);
	printf("\n");
	
	return 0;
}
Publicado 50 artículos originales · ganado elogios 5 · Vistas 1531

Supongo que te gusta

Origin blog.csdn.net/qq_42483691/article/details/104581648
Recomendado
Clasificación