
各种排序算法
dtwd886
这个作者很懒,什么都没留下…
展开
-
直接插入排序算法-设置哨兵版
/*直接插入排序算法的时间复杂度为O(n^2), 它是稳定的排序算法*/ #include int sum[1000]; int main() { int n,i,j; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&sum[i]); } for(i=2;i<=n;i++) { sum[0]=sum[i]; //设置哨兵原创 2017-07-18 18:11:18 · 1564 阅读 · 0 评论 -
直接插入排序算法-不设置哨兵版
/*直接插入排序算法的时间复杂度为O(n^2), 它是稳定的排序算法*/ #include int a[1000]; int main() { int n,i,j,temp; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } for(i=2;i<=n;i++) { j=i-1; temp=a[i];原创 2017-07-18 18:19:36 · 509 阅读 · 0 评论 -
二分法插入排序
/*二分插入排序算法的时间复杂度为O(n^2) 它为稳定的排序算法*/ #include int sum[1010]; int main() { int n,i,j,left,right,mid,temp; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&sum[i]); for(i=2;i<=n;i++) { left=1;原创 2017-07-18 18:42:54 · 289 阅读 · 0 评论 -
shell插入排序算法
/*shell插入排序算法的平均时间复杂度为O(n^1.3), 它为不稳定排序算法, d为每次所分组数(初始为n/2)。 */ #include int sum[1010]; int main() { int n,i,j,d,temp; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&sum[i]); } d=n/2; whil原创 2017-07-18 22:28:08 · 323 阅读 · 0 评论 -
直接选择排序算法
/* 直接选择排序算法的时间复杂度为O(n^2), 它是不稳定的排序算法。 */ #include int sum[1100]; int main() { int n,i,j,k,temp; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&sum[i]); } for(i=1;i<n;i++) { k=i; for(j=原创 2017-07-19 17:26:51 · 334 阅读 · 0 评论 -
堆排序
/* 堆排序算法的时间复杂度为O(n*log2n), 它为不稳定排序算法, 从小到大排序建的堆为大根堆。 */ #include int sum[1100]; void shift(int k,int len) //建堆的函数 { int i,j,flag,temp; i=k; j=2*k; temp=sum[k]; flag=1; while(j<=len&&flag) {原创 2017-07-19 18:41:06 · 189 阅读 · 0 评论 -
冒泡排序算法
/* 冒泡排序算法的复杂度是O(n^2), 它是一种稳定的排序算法。 */ #include int sum[1010]; int main() { int i,j,flag,temp; int n; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&sum[i]); } i=1; flag=1; while(i<n&&fla原创 2017-07-19 21:59:51 · 168 阅读 · 0 评论 -
快速排序算法
/* 快速排序算法的时间复杂度为O(n*log2n), 它为不稳定的排序算法。 */ #include void QSort(int sum[],int left,int right) { int i,j,temp; if(left<right) { i=left; j=right; temp=sum[i]; do { while(temp<sum[j]&&i<j原创 2017-07-19 22:40:26 · 189 阅读 · 0 评论