冒泡算法
Posted tedani
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡算法相关的知识,希望对你有一定的参考价值。
冒泡算法:
外围for控制大循环需N次,
内存控制每次大循环需比对M次。
因每次大循环,均挪移一个最大(最小值)到Table首或Table尾,因此下一个大循环则比前一次少一个循环(下一个循环挪移【第二大】or【第二小】到对应位置)
#include <stdio.h>
void printTable(int* p, int len)
{
int i;
printf("numberTable: ");
for (i=0; i<len; i++)
{
printf("%d ",*(p+i));
}
printf("
");
}
void buble_sort(int* p, int len)
{
int i,j,temp;
for (int i=1; i<len; i++)
{
printf("%dst---------------------
",i);
for (int j=0; j<len-i; j++)
{
if (*(p+j) < *(p+j+1))
{
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
printTable(p, len);
}
}
}
void main(void)
{
int numberTable[] = {5,13,2,76,24,31,1};
int i,j,temp,len=sizeof(numberTable)/sizeof(int);
printf("numberTable len:%d
", len);
printTable(numberTable, len);
buble_sort(numberTable, len);
/* for (int i=1; i<len; i++)
{
printf("%dst---------------------
",i);
for (int j=0; j<len-i; j++)
{
if (numberTable[j] < numberTable[j+1])
{
temp = numberTable[j];
numberTable[j] = numberTable[j+1];
numberTable[j+1] = temp;
}
printTable(numberTable, len);
}
} */
}
以上是关于冒泡算法的主要内容,如果未能解决你的问题,请参考以下文章