麻煩c語言大神幫我做一道題。。謝謝

2021-05-13 23:05:36 字數 3317 閱讀 7790

1樓:匿名使用者

給你其中排序的演示**,你去看看吧

(1)「冒泡法」

冒泡法大家都較熟悉。其原理為從a[0]開始,依次將其和後面的元素比較,若a[0]>a[i],則交換它們,一直比較到a[n]。同理對a[1],a[2],...

a[n-1]處理,即完成排序。下面列出其**:

void bubble(int *a,int n) /*定義兩個引數:陣列首地址與陣列大小*/

}冒泡法原理簡單,但其缺點是交換次數多,效率低。

下面介紹一種源自冒泡法但更有效率的方法「選擇法」。

(2)「選擇法」

選擇法迴圈過程與冒泡法一致,它還定義了記號k=i,然後依次把a[k]同後面元素比較,若a[k]>a[j],則使k=j.最後看看k=i是否還成立,不成立則交換a[k],a[i],這樣就比冒泡法省下許多無用的交換,提高了效率。

void choise(int *a,int n)}}

選擇法比冒泡法效率更高,但說到高效率,非「快速法」莫屬,現在就讓我們來了解它。

(3)「快速法」

快速法定義了三個引數,(陣列首地址*a,要排序陣列起始元素下標i,要排序陣列結束元素下標j). 它首先選一個陣列元素(一般為a[(i+j)/2],即中間元素)作為參照,把比它小的元素放到它的左邊,比它大的放在右邊。然後運用遞迴,在將它左,右兩個子陣列排序,最後完成整個陣列的排序。

下面分析其**:

void quick(int *a,int i,int j)

}while(m<=n);

if(mi) quick(a,i,n);

}(4)「插入法」

插入法是一種比較直觀的排序方法。它首先把陣列頭兩個元素排好序,再依次把後面的元素插入適當的位置。把陣列元素插完也就完成了排序。

void insert(int *a,int n)

void choise(int *a,int n)

void quick(int *a,int i,int j)

void insert(int *a,int n)

void shell(int *a,int n)

/*為了列印方便,我們寫一個print吧。*/[code]

void print(int *a,int n)

main()

;int a2=;

int a3=;

int a4=;

int a5=;

printf("the original list:");

print(a1,10);

printf("according to bubble:");

bubble(a1,10);

print(a1,10);

printf("according to choise:");

choise(a2,10);

print(a2,10);

printf("according to quick:");

quick(a3,0,9);

print(a3,10);

printf("according to insert:");

insert(a4,10);

print(a4,10);

printf("according to shell:");

shell(a5,10);

print(a5,10);}

2樓:匿名使用者

給個自己寫的歸併排序吧!

void mergesort_up(int *datas,int datanum)//歸併排序(升序),datas為待排資料陣列的首地址,datanum為資料元素的個數

return 1;//有序返回1}

麻煩大神用c語言幫我做一道題。

3樓:匿名使用者

/*<3> <1> <7> <2> <4> <7> <4>[7] [4] [2] [3] [4] [7] [1]press any key to continue*/#include

#include

#define m 20

typedef struct node *link,*pnode;

link initlink()

void createlink(link head,int code,int n)

}int linklen(link head)return n;

}void showlink(link head)printf("\n");

}void outsequence(link head,int code)

p = q->next;

q->next = p->next;

code = p->code;

printf("[%d] ",code);

free(p);

p = q;

}printf("\n");

}int main() ;

int n = sizeof(a)/sizeof(a[0]);

createlink(head,a,n);

showlink(head);

outsequence(head,m);

free(head);

return 0;}

求助哪大神幫我實現一下用c語言實現的mymalloc,謝謝了

4樓:資料**

#include

#include

void mymalloc(int i)

}void main ()

急!!!求這道題的完整**,做程式設計 需要用c語言編寫 著急 求各路大神幫忙 謝謝

5樓:

這是我之前回答其他朋友的問題,跟你這個是類似的你參考下,稍微改改就行了。

c語言程式設計,這三道題哪位大神能幫幫我,謝謝啦,急~

6樓:回憶在上輩子

第一題可以使用迴圈,在迴圈中判斷各個位上數字是否相同,否則進行統計第二題對字串進行掃描,將連續*進行統計,如果達到n則下一個字元還是*的話則刪除後面至第一個非*字元(可以使用一個臨時陣列完成)

第三題可以使用一個結構體陣列(一般這種可以使用連結來做,不過題目要求結構體陣列),通過封裝對結構體陣列的操作達到相應的目的。

如果**不想自己寫的話

我可以有償代勞

7樓:匿名使用者

5財富三道題,網友的勞動是不是太廉價了。

c語言一道題,求解釋,一道C語言題,求解釋

輸入比如 13 4 15 6 12 這樣的加減法表示式並根據表示式計算結果 把輸入的字元轉化成int型 如果oldc為 則執行加法運算,否則執行減法運算 輸出sum 迴圈一直到輸入為 時結束 這個其實就是類似於簡單的 計算機 呵呵 一道c語言題,求解釋 題目輸出的是 指標所指的字串的長度。一共是10...

求解一道C語言基礎程式設計題,一道C語言程式設計題求解

舉個例子你就懂了,以16進位制的2abc為例,16進位制轉為10進位制的方法,就是從右到左,依次用該位的數字乘以16的0次方 16的1次方 16的2次方 同樣如果是其它進位制,比如8進位制,那就是8的0次方 1次方等等 之和,比如說2abc轉10進位制,就等於 2abc 16 c 1 b 16 a ...

關於c語言的一道題,關於C語言的一道題

第一個是把整型資料格式輸出為浮點型資料,這個主要還是看float的小數點有效位數,我也不太記得了,6 7位,是哪一個我也不記得了。第二個是把浮點型資料格式輸出為整形,就會把小數點部分省略,記住這裡不是數學上的四捨五入,不管多大的小數部分都會扔掉。輸出是什麼你應該知道的,執行 就ok 第一句自不必多說...