基于对九大内部排序的性能及过程的分析
一. 冒泡排序
1.1. C++语言实现代码
1.void bubble_sort(int arr[], int number)
2.{
3. int i = 0;
4. for (i = 0; i < number - 1; i++)
5. {
6. int flag = 1;
7. int j = 0;
8. for (j = 0; j < number - i - 1; j++)
9. {
10. if (arr[j] > arr[j + 1])
11. {
12. int tmp = arr[j];
13. arr[j] = arr[j + 1];
14. arr[j + 1] = tmp;
15. flag = 0;
16. }
17. }
18. if (flag == 1)
19. {
20. break;
21. }
22. }
23.}
1.2. GIF过程展示
1.3. 复杂度
最坏时间复杂度:
最简时间复杂度:O(
)
平均时间复杂度:O(
)
空间复杂度:O(
)
1.4. 排序规则
跟邻位比较,将如果邻位比这个数小交换位置;反之则对邻位进行这个操作
二. 选择排序
2.1. c++语言代码实现
void choose_short(int arr[],int number){
int choose=0;
for(int i=0;i<number;i++){
choose=i;
for(int j=i+1;j<number;j++){
if(arr[j]<arr[choose]){
int temp=arr[j];
arr[j]=arr[choose];
arr[choose]=temp;
}
}
}
}
2.2. GIF过程展示
2.3. 复杂度
最坏时间复杂度:
最简时间复杂度:
平均时间复杂度:
空间复杂度:
2.4.排序规则
先挑选一个数的位置视为最小数的位置,将其与下一个数比较;如果下一个数比这个数小则二者交换位置,然后交换完的数的下一个数继续进行这个操作;反之如果最小数的检查位置的数没有最小数小则跳过这个位置
三. 插入排序
3.1. c++代码实现
void insert_short(int arr[], int number) {
int insert = 0;
for (int i = 1; i < number; i++) {
insert = arr[i];
for (int j = 0; j < i; j++) {
if (arr[i] > arr[j]) {
continue;
} else if (arr[i] < arr[j]) {
int temp = arr[i];
for (int k = i; k > j; k--) {
arr[k] = arr[k - 1];
}
arr[j] = temp;
break;
}
}
}
}
3.2. GIF过程展示
3.3. 复杂度
最坏时间复杂度:
最简时间复杂度:
平均时间复杂度:
空间复杂度:
3.4. 排序规则
每次选择一个数让他与前面的数对比;
如果比前面的数大,跳过,选择下一个数;
如果比前面的数小,再与前面的前面的数比较;重复这个操作,直到这个数比前面的数大,然后将其原先原先位置的数到那个比这个数小的数的后一位数全向后移一位,再将这个数插入到比他小的数的后一位