Pertence ao pedido original.
(1) Idéias:
A classificação por bolha serve para ajustar os elementos maiores para trás. Comparação é a comparação de dois elementos adjacentes, e a troca também ocorre entre esses dois elementos. Cada vez que o array original é percorrido, o maior elemento está no final.
(2) Análise de complexidade:
(2.1) Complexidade de tempo:
Melhor caso: a ordem positiva é ordenada, basta comparar n vezes. Portanto, é O (n). O programa precisa adicionar um bit de flag, se uma travessia estiver em uma sequência positiva, ela será interrompida.
Pior caso: ordem e ordem reversa, precisa comparar (n-1) + (n-2) +… + 1 vezes, O ( ).
Situação média: O ( ).
(2.2) Complexidade do espaço:
O(1)。
(3) Estabilidade:
A classificação por bolha serve para ajustar os elementos maiores para trás. Comparação é a comparação de dois elementos adjacentes, e a troca também ocorre entre esses dois elementos. Portanto, se dois elementos são iguais, acho que você não vai trocá-los de forma enfadonha; se dois elementos iguais não forem adjacentes, então, mesmo que os dois elementos sejam adjacentes um ao outro por meio da troca pareada anterior, isso Não há troca no momento , então a ordem dos mesmos elementos não muda, então a classificação por bolha é um algoritmo de classificação estável.
segmento de código:
void bubble_sort(int arr[],int len)
{
int tmp;
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)
{
if(arr[j]>arr[j+1]) //非降序
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}