#include
#include
/*** 排序演算法
*///偽版氣泡排序
void
bubblesort
(int k,
int n)}}
printf
("總共進行了%d次比較,進行了%d次移動!"
,count1,count2);}
//氣泡排序
void
bubblesortplus
(int k,
int n)}}
printf
("總共進行了%d次比較,進行了%d次移動!"
,count1,count2);}
//選擇排序
void
selectsort
(int k,
int n)}if
(min != j)
}printf
("總共進行了%d次比較,進行了%d次移動!"
,count1,count2);}
//直接插入排序
void
insertsort
(int k,
int n)
k[j+1]
= temp;}}
}//希爾排序
void
shellsort
(int k,
int n)
k[j+gap]
= temp;}}
}while
(gap >1)
;}//堆排序
void
swap
(int k,
int i,
int j)
void
heapadjust
(int k,
int s,
int n)
if(temp >= k[i]
) k[s]
= k[i]
; s = i;
} k[s]
= temp;
}void
heapsort
(int k,
int n)
for(i=n;i>
1;i--)}
//歸併排序(遞迴)
void
merging
(int
*list1,
int list1_size,
int*list2,
int list2_size)
else
}while
(i < list1_size)
while
(j < list2_size)
//實現歸併,把最後的資料存到list1裡
for(m=
0;m<
(list1_size+list2_size)
;m++)}
void
mergesort
(int k,
int n)
}//歸併排序(迭代)
void
mergesort
(int k,
int n)
next =0;
while
(left_minelse
}while
(left_minwhile
(next >0)
}}}//快速排序
intpartition
(int k,
int low,
int high)
if(k[m]>k[high])
if(k[m]>k[low])
*/point = k[low]
;while
(lowswap
(k,low,high)
;/*改進**2
k[low] = k[high];//改變不必要的交換
*/while
(low<= point)
swap
(k,low,high)
;/*改進**2
k[high] = k[low];//改變不必要的交換
*/}/*改進**2
k[low] = point;//改變不必要的交換
*/return low;
//返回中間點
}void
isort
(int k,
int low,
int high)
void
qusort
(int k,
int low,
int high)
/*改進**3
if(high-low>7)else
*//*改進**4,偽遞迴
if(high-low>7)
void
quicksort
(int k,
int n)
//快速排序的優化
intmain()
;//bubblesort(a,10);
//bubblesortplus(a,10);
//selectsort(a,10);
//insertsort(a,10);
//shellsort(a,10);
//heapsort(a,10);
//mergesort(a,10);
//mergesort(a,10);
quicksort
(a,10);
printf
("排序後的結果是:\n");
for(i=
0;i<
10;i++
)return0;
}
大話資料結構 幾種排序演算法
這篇筆記主要是寫寫這些常見的排序演算法。思想 兩兩比較相鄰記錄的關鍵字,反序則交換,直到沒有反序為止。include 交換int型陣列l中下標i和j的值 void swap int l,int i,int j void bubblesort int l 分析 最好的情況比較n 1次,時間複雜度o n...
資料結構 幾種常見的排序演算法
下圖是我掌握的一些排序演算法,我將他們做了分類,當然,排序演算法遠不止這些。a 演算法思想 假設第乙個數是有序的,那麼把後面的數拿出來插入到這個有序數的合適位置,假設是公升序 比第乙個數小則向後移動第乙個數,將數插入到第乙個數的前面 插入後有序區間擴大為兩個,依次向後,不斷拿出新的數插入到有序區間,...
資料結構經典演算法之希爾排序
目錄 希爾排序 一 操作方法 二 排序方法 三 演示 四 c 實現 五 效能分析 希爾排序又稱 縮小增量排序 基本思想 先取乙個小於n的整數d1作為第乙個增量,然後把檔案的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同個乙個組中,現在各組內進行直接插入排序 然後,取第二個增量d2實質上希爾排...