(感谢亲爱的读者朋友,制作不易,嫖者安康)
在茫茫的代码大陆上,存在着许多排序算法。但在这些算法中,有三个扛把子算法,它们是:
冒泡排序
插入排序
选择排序
现在,先来介绍冒泡排序
默认从小到大开始排序(从大到小的思路其实差不多,主要是我实在是太懒惰,聪明的读者肯定会写哒)
冒泡排序,重复的、有方向性的遍历数组中的每一个元素,每一次比较其中的两个相邻元素,将其中较为大的元素浮到后面去。以此类推,重复排序完数组中的每一个元素后,数组便被Sort完毕。
很简单,对不对……
那就让我们来整理一下代码思路
我们先假设存在一个无序的数组M[1,2,3,4,......,n-1,n]
首先是初始状态:
混乱、无序、无从下手。
接着是开始第一次冒泡:
从后往前有方向性的依次比较两个元素的大小,即:
比较
( M[n] , M[n-1] ) , ( M[n-1] , M[n-1] ) ...... ( M[3] , M[2] ) , ( M[2], M[1] ) 就像这样去比较
同时
若存在:M[k+1] < M[k] ,则交换它们的位置;反之,就不甩它,继续下一组冒泡。
那,聪明的,你知道吗,要进行多少次冒泡呢?
n-1 次冒泡。
没错,在第二次冒泡时,原来的无序数组M[1,2,3,4,......,n-1,n]已经摇身一变成为了M[1]是原数组的最小值与无序数组M[2,3,4,......,n-1,n]。
最后,会在第 n-1 次冒泡,原来的无序数组变为有序数组,Bubble Sort 完毕。
康康这个动画(网上有的,自由转载):
是不是一下子就懂了
关于这个算法的时间复杂度,我是真的不想写了。推荐大家去康康这位博主“道为骨”的大O算法介绍吧。
(其实大家都是来这里嫖代码的,对吧)
紧接着,给大家上一段冒泡排序的代码
public void Bubble_sort(int[] List)
{
int i, t=1, Temp;//t是目前冒泡的次数,就是小于n-1;i是数组中的第几位元素;Temp是中间替换量,大家都懂哒
bool Finish = false;//康康你到底冒泡冒完没有,刚开始是没有,所以判为F
while((t List[i + 1])
{
Finish = false;
Temp = List[i];
List[i] = List[i + 1];
List[i + 1] = Temp;//这里就是换数据的地方,其实可以简单化的,但是啊,我就是懒惰,聪明的,你,会写的。
}
}
t++;
}
}
还不过瘾的话,我把它的排序效果放出来哈
这里是项目代码:
using System;
namespace Bubble_Sort
{
class Program
{
static void Main(string[] args)
{
int[] Example = new int[] {-99,-4323,23,42,8848,114514,234 };
Bubble bubble = new Bubble();
bubble.Bubble_sort(Example);
foreach(var item in Example)
{
Console.Write(item+"," );
}
Console.Read();
}
}
public class Bubble
{
public void Bubble_sort(int[] List)
{
int i, t=1, Temp;//t是目前冒泡的次数,就是小于n-1;i是数组中的第几位元素;Temp是中间替换量,大家都懂哒
bool Finish = false;//康康你到底冒泡冒完没有,刚开始是没有,所以判为F
while((t List[i + 1])
{
Finish = false;
Temp = List[i];
List[i] = List[i + 1];
List[i + 1] = Temp;//这里就是换数据的地方,其实可以简单化的,但是啊,我就是懒惰,聪明的,你,会写的。
}
}
t++;
}
}
}
}
这里是结果:
-4323,-99,,23,42,234,8848,114514,
OK啦,冒泡算法就给同志们说完了,很感谢大家的阅读(嘿嘿,点赞,嘿嘿,打赏)。
此外,另外两个算法我会给大家普及哒。
大家还是可以去看看大O表示法,去看看这个冒泡算法的时间复杂度,这个还是要考虑机效哒。
新人最好不要嫖代码哦,自己手打,一两遍就学会了。
制作不易,嫖者安康,转载给我说一声喔!!!