交换排序:
交换排序的思想是:通过依次交换逆序的元素实现排序。
冒泡排序:
冒泡排序的基本思想是:从第一个元素开始,依次比较两个相邻的元素,如果两个元素逆序,则进行交换。假设元素中有n个待比较元素,第一趟排序结束后,就会将数组中最大的元素移到数组末尾,即第n个位置,第二趟排序后,就会将次大的元素移动到底n-1个位置,依次类推,经过n-1趟排序后,就构成了一个有序的数组。 这样的排序类似于气泡慢慢向上移动,因此成为冒泡排序。
实现代码:(C#实现)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace maopao
{
class Program
{
static void Main(string[] args)
{
int[] a = new int[] {56,22,67,32,59,12,89,26}; //待排序数组
for (int m = 0; m < a.Length - 1; m++)
{ //每一趟排序都要把最大的压倒最下面,最后只剩下第一个元素,不需要再进行排序,所以要进行a.Length - 1次排序
bool flag = true;//标志位,如果在进行某一趟排序后,数组已经是有序的了,不需要再进行了,那么这个标志位会一直为true
for (int i = 0; i < a.Length - m; i++) { //每一趟排序后,都产生了一个最大的放到了最下面,所以下一次排序就少了一个待排序的元素
int j=i+1;
if (j<a.Length && a[i] > a[j]) {//如果前面的元素大于后面的元素,就交换
int t = a[j];
a[j] = a[i];
a[i] = t;
flag = false;//有前面元素大于后面元素,标志位就设为false
}
}
if (flag){//如果标志位仍为true,那么说明数组已经是有序的了,不需要再进行比较了
break;
}
}
for (int i = 0; i < a.Length; i++) {
Console.WriteLine(a[i]);
}
Console.ReadKey();
}
}
}
运行结果:
冒泡排序的时间复杂度为O(n^2),冒泡排序是一种稳定的排序算法。