目录
1、冒泡排序
思想:
让数组当中相邻的两个数进行比较,数组当中比较小的数值向上浮,数值比较大的向下沉!外层for循环控制循环次数,内层for循环控制相邻的两个元素进行比较。
例:4 1 5 2
第一次:1 4 2 5
第二次:1 2 4 5
第三次:1 2 4 5
时间复杂度:
源代码c:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 5
void bubble_sort(int k[], int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++) //外循环表示比较n-1轮
{
for (j = 0; j < n-1-i; j++) //内循环表示每轮比较结束后,最后一个值最大,每轮除去最后一个继续比较
{
if (k[j] > k[j+1])
{
temp = k[j];
k[j] = k[j+1];
k[j+1] = temp;
}
}
}
}
int main()
{
int k[N];
int i;
srand((unsigned int)time(NULL));
for(i=0;i<N;i++)
k[i] = rand() % N;
bubble_sort(k,N);
for(i=0;i<N;i++)
printf("%d ",k[i]);
printf("\n");
system("pause"); //可以实现冻结屏幕,便于观察程序的执行结果
return 0;
}
//改进的冒泡排序
#include<stdio.h>
#include<stdlib.h>
#define N 5
void bubble_sort(int k[], int n)
{
int i, j, temp,flag = 1;
for (i = 0; i < n - 1 && flag; i++) //外循环表示比较n-1轮
{
flag=0;
for (j = 0; j <