oracle中冒泡排序,每天一个算法:冒泡排序

说明:冒泡算法是最基础的算法之一,其作用是将一组无序的元素排列为按照一定顺序(升序或者降序)排列的有序列。

原理:设置两层for嵌套循环,外层循环为限定循环,内层循环将下标小于外层循环限定长度的两个相邻元素进行比较,如果两个元素的大小顺序为逆序,则交换两个元素。不断重复以上动作,知道外层循环的限定长度等于要比较的序列的总长度为止。到此,整个序列将按照升序或者降序的顺序排列。

时间复杂度:冒泡排序由内外两层循环组成。内循环从前向后一次比较各对相邻元素的大小,如有必要则交换逆序的元素对。故在每一轮内循环中,需要扫描和比较n-1对元素,至多需要交换n-1对元素。无论元素的比较还是元素的交换都属于基本操作,故每一轮内循环至多需要执行2(n-1)次基本操作。外循环至多执行n-1轮。因此,总共需要执行的基本操作不会超过2(n-1)^2次。则该算法的时间复杂度则有T(n)=O(2(n-1)^2)。则该算法的时间复杂度为O(n^2)。

static void Main(string[] args)

{

//任意定义一个数字型数组

int[] array = new int[] {12,34,5,78,23,90,1,23,51,76,64,87,43,25,13};

//升序冒泡排序

for (int i = 0; i < array.Length; i++) {

for (int j = 0; j < i; j++) {

if (array[i] < array[j]) {

int temp = array[i];

array[i] = array[j];

array[j] = temp;

}

}

}

for (int i = 0; i < array.Length; i++) {

Console.Write(array[i]+"\t");

if (i % 5 == 0) {

Console.Write("\n");

}

}

Console.ReadKey();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值