一、概念
思想:
如果元素比较是逆序则交换元素。
1.冒泡排序
基本思想:基于简单交换思想
每趟不断将元素两两比较,按照需要是顺序判断是否需要进行交换。
void bubble_sort(SqList &L) { // 冒泡排序算法
int m,i,j; RedType x; // 交换时临时存储
for( m=1; m<=n-1;m++) { // 总共需要m趟
for(j=1;j<=n-m; m++) {
if(L.r[j].key>L.r[j+1].key) { // 发现逆序
x=L.r[j];L.r[j]=L.r[j+1]; L.r[j+1]=x // 交换
}
}
}
}
优点:每趟结束时,不仅能找到一个最大值到最后面的位置,还能理顺其他元素。
提高思路:如果某一趟比较没有进行交换顺序,则表明元素顺序已经达成。
void bubble_sort(SqList &L) { // 冒泡排序算法
int m,i,j,flag=1; RedType x; // 交换时临时存储,新增一个标记判断是否有进行交换
for( m=1; m<=n-1 && flag=1;m++) { // 总共需要m趟
flag = 0
for(j=1;j<=n-m; m++) {
if(L.r[j].key>L.r[j+1].key) { // 发现逆序
flag = 1 // 如果发生交换,标记符置为1,如果没有进行表换,flag保存为0
x=L.r[j];L.r[j]=L.r[j+1]; L.r[j+1]=x // 交换
}
}
}
}
2.快速排序
思路:
任取一个元素,所有比他大的一律方后面,比他小的一律方前面。形成左右两个子表
对各子表重新选择中心元素并依次规则调整
直到每一个子表的元素只剩一个
标签:元素,交换,flag,冒泡排序,算法,子表,排序,逆序 From: https://www.cnblogs.com/kongxudeshenghuo/p/16184654.html