排序算法
1、冒泡排序:
思维:待排序数列有 n 个元素,首先比拟第 0 个元素和第 1 个元素,如果前者比后者大,则替换这两个元素,而后持续比拟第 1 个和第 2 个元素,反复此过程直到第 n - 2 和 n - 1 个元素比拟完,这样一趟下来,最大的元素就排好序了,咱们称之为一趟冒泡。而后对残余未排序的元素持续进行上述操作,直到所有元素都排好序。(能够从前往后也能够从后往前比拟)
例子:
原始序列:21 25 49 25* 16 08
1 趟:08 21 25 49 25* 16
2 趟:08 16 21 25 49 25*
3 趟:08 16 21 25 25* 49
4 趟:08 16 21 25 25* 49
第一趟冒泡的过程:
1 21 25 49 25* 16 08
2 21 25 49 25* 08 16
3 21 25 49 08 25* 16
4 21 25 08 49 25* 16
5 21 08 25 49 25* 16
6 08 21 25 49 25* 16
稳定性:稳固
工夫复杂度:O(n^2)
代码:
c++:
include<iostream>
using namespace std;
void print(int array[], int n);
// 冒泡排序
void bubble_sort(int arr[],int n) {
for (int i = 0; i < n – 1; i++)
{
for (int j = 0; j < n – i – 1; j++)
{
if (arr[j] > arr[j + 1])
{
swap(arr[j],arr[j+1]);
}
}
}
}
void print(int array[],int n) {
for (int i = 0; i < n;i++) {
cout << array[i] << ” “;
}
cout<< endl;
}
int main() {
int array[] = { 21,25,49,25,16,8};
int m =sizeof(array) / sizeof(array[0]);
cout << “ 初始序列为:” << endl;
print(array,m);
bubble_sort(array,m);
cout << “ 排序后果为:” << endl;
print(array,m);
return 0;
}