排序算法

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;

}