基本思想:
兩兩比較,如果發生逆序則交換,直到所有記錄都排好序為止。
常見的交換排序方法:
//氣泡排序
/* 元素/記錄總個數:n個
趟數:(n-1)趟
每趟比較次數:第 i 趟需要兩兩比較(n-i)次
*/void
bubblesort1
(sqlist &l)}}
}
排序演算法詳細**
//氣泡排序優化:某一趟未發生交換,即停止演算法,後面幾趟可以省略
/* 元素/記錄總個數:n個
趟數:(n-1)趟
每趟比較次數:第 i 趟需要兩兩比較(n-i)次
*/void
bubblesort2
(sqlist &l)}}
}
排序演算法詳細**基本思想:
任取乙個元素(如:第乙個元素)為中心;
比中心元素小的一律放前面,比它大的一律後放面,將待排序序列分割成左右兩個子表;
對各個子表重新選擇中心元素,並依此規則分別進行以上排序;(遞迴思想)
直到每個子表的元素只剩乙個,整個序列有序。
具體實現:
//快速排序演算法
void
qsort
(sqlist &l,
int low,
int high)
}//獲得一趟排序後中心點位置索引值
intfindcenter
(sqlist &l,
int low,
int high)
l.nums[low]
= l.nums[0]
;return low;
}
排序演算法詳細**空間複雜度:o(l
ogn)
o(logn)
o(logn
) 是一種不穩定的排序方法
快速排序不適於對原本有序或基本有序的記錄序列進行排序。
越亂越好,越有序反而越慢了,快速排序不是自然排序方法。(自然排序:基本有序,更快)
C 交換排序(氣泡排序 快速排序)
氣泡排序 思路 實現 氣泡排序 void bubblesort sqlist l m 執行一次長度減一 複雜度 特點 快速排序 思路 如3,9,7,4,6五個數字排序 隨便選乙個 其中的數字,比如4,然後把3放到4的左邊,把9,7,6放到4的右邊。然後在9,7,6中選乙個數字如7,把6放到7的左邊,...
C 交換排序(冒泡 快速排序)
前置知識 實現 include include include using namespace std void bubblesort int a,int len if flag return 小優化 一趟下來沒有交換便表示排好序了,返回即可 intpartition int a,int l,int...
交換排序 氣泡排序,快速排序
交換排序 氣泡排序,快速排序 執行環境 vs2010 include include include include define ok 1 define true 1 define false 0 define maxsize 50 typedef struct redtype typedef s...