鍊錶排序 冒泡和插入

2021-07-24 13:30:38 字數 984 閱讀 8580

1.首先定義乙個結構體,用於儲存排序的資料

typedef

struct num

num;

2.生成鍊錶,這裡採用的是尾插法

num *p=null,*pr=head;

int num = ;

int i;

for(i=0;i<15;i++)

p->num = num[i];

p->next=null;

}return head;

}

3.這裡先介紹氣泡排序。氣泡排序的原理:1。比較相鄰的兩個元素,如果第乙個比第二個大就對它進行交換,否則就繼續往下執行。這樣執行完第一輪後鍊錶中最大的數就在鍊錶的尾端。然後再對未排序的數進行相同的操作。

由此可見氣泡排序最好的時間複雜度是o(n),即一次迴圈就排好了。最差的時間複雜度是o(n2),要迴圈(n-1)次才排好序。下面以**為例

num *sort(num *head)

for(a=0; anext;

temp1=null;

while(p!= null)

temp1=pre;

pre=p;

p=p->next;}}

return head;

}

4.插入排序,原理:假設有乙個已經排好的序列,要求在這個序列中插入要排的資料,使之還是有序的序列,以**為例:

struct num *head1=

null,*p=head,*pr,*p1,*p2;

while(p!=

null)

else

else

if(p->num>head1->num)

}else

p1=p1->next;}}

}}

return head1;

平均來說,插入演算法的時間複雜度是o(n2)。

鍊錶氣泡排序

2011 07 22 21 33 111人閱讀收藏 舉報 任意兩個相鄰節點p q位置互換圖示 假設p1 next指向p,那麼顯然p1 next next就指向q,p1 next next next就指向q的後繼節點,我們用p2儲存 p1 next next指標。即 p2 p1 next next,則...

鍊錶氣泡排序

任意兩個相鄰節點p q位置互換圖示 假設p1 next指向p,那麼顯然p1 next next就指向q,p1 next next next就指向q的後繼節點,我們用p2儲存 p1 next next指標。即 p2 p1 next next,則有 p q 排序前 p1 next p1 next nex...

鍊錶排序 氣泡排序

動態陣列的儲存和排序 需求 c不支援動態陣列,申明的時候,一定要指明動態陣列的大小,不能將陣列的大小設定為未知數,但是很多情況 下,資料量的大小是未知數,或者資料量的大小會隨著問題的變化而變化。解決 使用鍊錶結構來儲存資料 include stdafx.h include stdafx.h incl...