从今天开始我的算法之旅,同时开启自己的技术博客之路!!!努力,奋斗!!!
首先从简单的排序算法开始
排序算法:
① 冒泡排序:他回遍历若干次要排序的数列,每次遍历时,它都会从前往后依次比较相邻两个数的大小;如果前者比后者大则交换他们的位置。这样,一次遍历之后最大的元素在数列的末尾!采用相同的方法再次遍历,第二大的数排在最大数之前,重复此操作直到整个数列有序为止。
代码实现c++
void bubble_sort1(int arr[], int n)
{
int tempNum = 0;
for (size_t i = 0; i < n; i++)
{
for (size_t j = i; j < n; j++)
{
if (arr[i]>arr[j])
{
tempNum = arr[i];
arr[i] = arr[j];
arr[j] = tempNum;
}
}
}
}
void bubble_sort2(int arr[], int n)
{
int tempNum = 0;
for (size_t i = n-1; i > 0; --i)
{
for (size_t j = 0; j < i; ++j)
{
if (arr[j]>arr[j+1])
{
tempNum = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tempNum;
}
}
}
}
void bubble_sort3(int arr[], int n)
{
int tempNum = 0;
int flag ;
for (size_t i = n - 1; i > 0; --i)
{
flag = 0;
for (size_t j = 0; j < i; ++j)
{
if (arr[j]>arr[j + 1])
{
tempNum = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tempNum;
flag = 1;
}
}
if (0 == flag)
{
break;
}
}
}
因此冒泡排序的时间复杂度为0(N*N)
算法的稳定性:假设在数列中存在a[i] = a[j] 若在排序之前a[i]在a[j]前面;并且排序之后a[i]还在a[j]前面,则这个排序是稳定的,所以说冒泡排序是稳定排序的。