1、冒泡排序
原理:依次比较两个相邻的元素,将值大的交换在右边。第一趟比较完成后,最后一个数一定是最大的一个数,第二躺比较的时候最后一个数不参与比较;第二趟比较完成后,倒数第二个数也是数组中第二大的数;依次类推,到第N-1趟,数组已经有序。
代码:
void BUbbleSort(int[] arr, int length)
{
for (int i =0;i<length-1;i++)
{
for(int j=0;j<length-0-i;j++)
{
if(arr[j+1]<arr[j]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
时间复杂度:
最好情况下,数组正序排列,只需执行一趟排序,比较n-1次,故时间复杂度为O(n); 最坏情况下,数组逆序排列,需执行逆n-1趟排序。每趟排序要进行n-1次比较,故Cmax = n(n-1)/2且每次比较都必须记录三次达到交换位置。Mmax = 3n(n-1)/2,最坏时间复杂度为O(n^2).