冒泡排序
生活中的排队场景,冒泡排序核心是两两相邻进行比较。
一旦条件符合,就交换位置。
如果不符合,继续下一个两两相邻比邻,经过第一轮之后,整除团队中最高的那个人就找到了
10 -1 -2 -10 按小到大
第一轮:最大的那个数被冒到最后
1) 10 与 -1 进行比较,交换 ,就成 -1 10 -2 -10
2) 10 与 -2 进行比较,交换,变成:-1 -2 10 -10
3) 10 与 -10 进行比较,交换,变成:-1 -2 -10 10
第一轮过去:最大的10就目前排在最后
第二轮:剩下的这三个人进行排列,倒数第二个高的人 -1 -2 -10
1) -1 与 -2 比较, 交换 ,变成: -2 -1 -10
2) -1 与 -10 比较, 交换 ,变成 -2 -10 -1 10
第三轮:剩下的两个数比较,找到倒数第三个高的人
1) -2 - 10 交换,变成: -10 -2 -1 10 完成排序
***4个数比较,需要比较3轮,每一轮比较次数不确定
冒泡排序的结构:
外层循环控制比较多少轮
for( int i = 0 ; i < 数组名.Length-1 ; i++ )
{
//内层for循环控制的是每一轮比较的次数
for ( int j = 0 ; j < 数组名.Length-1 ; j++ )
{
if ( n[j] > n[ j+1 ] )
{
int temp = n [j]; //将n[j]的值赋值给temp
n[j] = n[j+1]; //为 n[j] 重新赋值
n[i+1] = temp; //为 n[i+1] 赋值
}
}
}
VS中的程序:
namespace MaoPaopaixu 冒泡排序 { public class MaoPaopaixu { //冒泡排序 public static void Main(string[] args) { int[] numbers = new int[8];//定义数组 Random r = new Random();//定义随机数 for (int i = 0; i < numbers.Length; i++) { numbers[i] = r.Next(0, 100);//随机来几个数 } foreach (int i in numbers) { Console.WriteLine(i);//遍历 } for (int i = 0; i < numbers.Length - 1; i++) {//冒泡排序 for (int j = 0; j < numbers.Length - 1; j++) { if (numbers[j]>numbers[j+1])//判断两数据大小 { int temp = numbers[j];//numbersj给第三个变量 numbers[j] = numbers[j+1];//后面小的数给前面 numbers[j+1] = temp;//temp的值给numberj+1 } } } //冒泡之后的结果 Console.WriteLine("冒泡后的结果"); foreach(int item in numbers) { Console.WriteLine(item); } } } }
据说这是数据结构的内容,之前上课可能都学过,但是当时在摸鱼,现在没什么印象,惭愧啊~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)