《大话数据结构》第九章,讲了一种优化的冒泡排序,完整代码如下:
#include<iostream>using namespace std;#define MAX 5typedef struct{
int r[MAX + 1]; int len;
}seq;void myswap(seq *x, int i, int j){ int temp = x->r[i];
x->r[i] = x->r[j];
x->r[j] = temp;
}void bubbleSort(seq *x){ bool flag = true; // i表示第几轮比较,不表示数组下标
for (int i = 1; i < x->len && flag; i++)
{ cout << "第" << i << "轮排序:";
flag = false; // j表示数组下标,这里是从后往前比较,能同时挪动多个,提高了效率
// 比如,{3, 2, 1, 5, 4}经过一轮比较变成{1, 3, 2, 4, 5}
for (int j = x->len - 1; j >= i; j--)
{ if (x->r[j] > x->r[j + 1])
{
myswap(x, j, j + 1);
flag = true;
}
} for(int i = 1; i <= x->len; i++)
{ cout << x->r[i] << ' ';
} cout << endl;
}
}int main(){ cout << "输入数据:";
seq s; for(int i = 1; i <= MAX; i++)
{ cin >> s.r[i];
}
s.len = MAX;
bubbleSort(&s); cout << "排序结果:"; for(int i = 1; i <= s.len; i++)
{ cout << s.r[i] << ' ';
} cout << endl; return 0;
}运行结果:
输入数据:3 2 1 5 4 第1轮排序:1 3 2 4 5 第2轮排序:1 2 3 4 5 第3轮排序:1 2 3 4 5 排序结果:1 2 3 4 5
作者:海天一树X
链接:https://www.jianshu.com/p/d264383673b5
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦