我想實現在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數組嗎? –