排序算法
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;
}