我想实现在C.这里冒泡排序算法是我到目前为止有:如何实现冒泡排序在C.
#include<stdio.h>
void bubble_sort(int m, int a[100000]);
void main()
{
int a[100000], i, m;
FILE * be;
be=fopen("be.txt","r");
for (i=0; !(feof(be)); ++i)
fscanf(be,"%i", a+i);
m=i-1;
bubble_sort(m ,a);
fclose(be);
}
void bubble_sort(int m, int a[100000])
{
int i, ok, v, n=m;;
for (;!ok;ok=1)
{
ok=0;
for (i=0;i<=m-1;++i)
{
if (*(a+i)>*(a+i+1)) { v=*(a+i); *(a+i)=*(a+i+1); *(a+i+1)=v; ok=0;}
}
m=m-1;
}
for (i=0; i<n; ++i)
printf("%i ", a[i]);
}
我的伪代码:
Bubblesort2(A)
m:=length(A) - 1
repeat
OK := true
for i := 0 to m-1 do
if Ai > Ai+1 then
Ai <=>Ai+1
OK := false
m := m - 1
until OK
这不正确。在C中实现泡沫排序的代码是什么?
因为这是一项功课:你的第一步应该是使代码可读...我,好吧,V,M,N,A是不可理解的变量名。你的控制流结构也可以改进 - 为什么你使用的结构像((!!ok; ok = 1)? – tanascius
我见过'*(a + i + 1)'在初学者的问题中经常出现 - 教授是这样教的,或者为什么不是人们使用'a [i + 1]'? – AndiDog
你真的会尝试冒泡排序一个100K数组吗? –