2020-05-26 14:58发布
冒泡排序最多通过N-1次排序将数组变为有序,如果是升序排序的话,那么第i次排序会将第i大的元素放到倒数第i个正确的位置,直到本次排序没有任何元素交换则已排好序,这里面要注意进行优化及时退出循环:
static void BubbleSort(T[] _Array) where T: IComparable
{
for(int i = 0; i < _Array.Length - 1; i++)
bool swap = false;
for(int j = 0; j < _Array.Length - i - 1; j++)
if(_Array[j].CompareTo(_Array[j + 1]) > 0)
T tmp = _Array[j];
_Array[j] = _Array[j + 1];
_Array[j + 1] = tmp;
swap = true;
}
if (!swap)
break;
static void Main(string[] args)
int[] arr = { 100, 50, 76, 20, 81 };
BubbleSort(arr);
foreach (var ele in arr)
Console.Write(ele + ",");
Console.WriteLine();
string[] strarr = { "c", "b", "a", "e", "d" };
BubbleSort(strarr);
foreach (var ele in strarr)
运行输出:
以int类型数组为例,进行升序排序,冒泡排序如下:
int[]arr=new int[]{3,5,1,7,4,8};
for(int i = 0;i < arr.Length - 1; i++)
for(int j = 0;j < arr.Length - 1 - i; j++)
if(arr[j]>arr[j+1])
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
http://49.232.157.182/changzheng/GIF1.gif
做了一个gif图, 不知道怎么上传gif, 这是冒泡排序的过程演示, 可视化.
何为冒泡?就是气泡从水底上升至水面的过程。编程中也是一样的,让数据在数组中进行冒泡。逻辑思想是相邻的两个数据进行对比,从而进行冒泡。二楼的代码楼主可以参考下。
其实一楼已经回答完毕,建议楼主要先弄明白如何进行冒泡的,换而言之就是冒泡排序的流程
然后关于代码:其实是有规律可言的:
借用一楼代码:
//外层循环控制层数
{//内层循环控制每层得出最大值的次数
{//if这里的大于号和小于号,控制的是升序还是降序排序
冒泡排序算法(Bubble Sort)是一种流行但低效的排序算法。它的原理是反复比较待排序数组中所有相邻的两个数据,使他们按照升序(或降序)排列。当待排序数组中所有相邻数据都比较过一次之后,待排序数组中最小(或最大)的数据会被逐步交换到第一位,就像气泡从水底慢慢升到水面一样,故名“冒泡排序算法”。
冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,每进行一趟比较,每一趟就少比较一次,一定程度上减少了算法的量
c#这门语言相比较java C++要简单很多,即使是零基础的同学,只要掌握了编程思想,其他的语法,定义就比较简单了,网上有很多免费的视频可以去看看,论坛博客等等,希望可以帮助到你
1 把jar文件导入到unity中2 在 unity中 AndroidJavaClass jc = new AndroidJavaClass(com.android.unityToandroid.UnityPlayerActivity); AndroidJavaObject jo = jc.GetStatic(m_instance); jo.Call(...
自己测试了一下,使用反射机制,可以调用类里面的静态方法,但是没有找到好的办法调用泛型静态方法,自己测试的代码如下:class Person { public static string Fun(string value) { Console.WriteLine(ttt); return value; } } class Progr...
visual studio导入字体 首先下载好字体包后解压,里面有个ttf文件夹,Windows系统直接选中所有的字体右键点击安装就好了。安装好字体后建议重启下visual studio然后再进入顶部菜单栏
学习unity引擎的话用C#学习UE4引擎的话用C++
当然。面向组件的开发思想即:每一个组件都是一个类。
Maximum属性:用来获取或设置TrackBar控件可表示的范围上限,即最大值。Minimum属性:用来获取或设置TrackBar控件可表示的范围下限,即最小值。SmallChange属性:用来获取或设置当滑块短距离移动时对Value属性进行增减的值。Value属性:用来获取或设置滑块在...
全天制学习的话, 大概15-20天。学会三大语序、数组、类和对象、属性方法、继承多态、抽象或是接口、集合对象。 之后,还需要掌握Unity引擎的基本操作、鼠标事件,以及最后的UGUI知识。如果说背包涉及到网络数据,还需要掌握数据解析、读取、存储。做一个完整...
都是正常的呀 刚运行了一下 可以正常访问
https://q.cnblogs.com/q/121854/ 可以到这个网站上看一下,回答的比较专业.
string sourceFile = @C:\Users\wangwenping\source\repos\GetActivePro\ConsoleApp1\bin\Debug\;string zipfileName = ./debug;ZipFile.CreateFromDirectory(sourceFile, zipfileName);//源路径,目标路径
使用每个数组元素分别和第一个元素进行比较的方式,比较出最大值。
https://q.cnblogs.com/q/127423/ 可以参考这个网站上的内容,回答的比较专业
可以通过NAT内外网址转换得到
最多设置5个标签!
冒泡排序最多通过N-1次排序将数组变为有序,如果是升序排序的话,那么第i次排序会将第i大的元素放到倒数第i个正确的位置,直到本次排序没有任何元素交换则已排好序,这里面要注意进行优化及时退出循环:
static void BubbleSort(T[] _Array) where T: IComparable
{
for(int i = 0; i < _Array.Length - 1; i++)
{
bool swap = false;
for(int j = 0; j < _Array.Length - i - 1; j++)
{
if(_Array[j].CompareTo(_Array[j + 1]) > 0)
{
T tmp = _Array[j];
_Array[j] = _Array[j + 1];
_Array[j + 1] = tmp;
swap = true;
}
}
if (!swap)
break;
}
}
static void Main(string[] args)
{
int[] arr = { 100, 50, 76, 20, 81 };
BubbleSort(arr);
foreach (var ele in arr)
Console.Write(ele + ",");
Console.WriteLine();
string[] strarr = { "c", "b", "a", "e", "d" };
BubbleSort(strarr);
foreach (var ele in strarr)
Console.Write(ele + ",");
Console.WriteLine();
}
运行输出:
以int类型数组为例,进行升序排序,冒泡排序如下:
int[]arr=new int[]{3,5,1,7,4,8};
for(int i = 0;i < arr.Length - 1; i++)
{
for(int j = 0;j < arr.Length - 1 - i; j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
http://49.232.157.182/changzheng/GIF1.gif
http://49.232.157.182/changzheng/GIF1.gif
做了一个gif图, 不知道怎么上传gif, 这是冒泡排序的过程演示, 可视化.
何为冒泡?就是气泡从水底上升至水面的过程。编程中也是一样的,让数据在数组中进行冒泡。逻辑思想是相邻的两个数据进行对比,从而进行冒泡。二楼的代码楼主可以参考下。
其实一楼已经回答完毕,建议楼主要先弄明白如何进行冒泡的,换而言之就是冒泡排序的流程
然后关于代码:其实是有规律可言的:
借用一楼代码:
int[]arr=new int[]{3,5,1,7,4,8};
//外层循环控制层数
for(int i = 0;i < arr.Length - 1; i++)
{//内层循环控制每层得出最大值的次数
for(int j = 0;j < arr.Length - 1 - i; j++)
{//if这里的大于号和小于号,控制的是升序还是降序排序
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
冒泡排序算法(Bubble Sort)是一种流行但低效的排序算法。它的原理是反复比较待排序数组中所有相邻的两个数据,使他们按照升序(或降序)排列。当待排序数组中所有相邻数据都比较过一次之后,待排序数组中最小(或最大)的数据会被逐步交换到第一位,就像气泡从水底慢慢升到水面一样,故名“冒泡排序算法”。
冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,每进行一趟比较,每一趟就少比较一次,一定程度上减少了算法的量
static void BubbleSort
{
for(int i = 0; i < _Array.Length - 1; i++)
{
bool swap = false;
for(int j = 0; j < _Array.Length - i - 1; j++)
{
if(_Array[j].CompareTo(_Array[j + 1]) > 0)
{
T tmp = _Array[j];
_Array[j] = _Array[j + 1];
_Array[j + 1] = tmp;
swap = true;
}
}
if (!swap)
break;
}
}
static void Main(string[] args)
{
int[] arr = { 100, 50, 76, 20, 81 };
BubbleSort(arr);
foreach (var ele in arr)
Console.Write(ele + ",");
Console.WriteLine();
string[] strarr = { "c", "b", "a", "e", "d" };
BubbleSort(strarr);
foreach (var ele in strarr)
Console.Write(ele + ",");
Console.WriteLine();
相关问题推荐
c#这门语言相比较java C++要简单很多,即使是零基础的同学,只要掌握了编程思想,其他的语法,定义就比较简单了,网上有很多免费的视频可以去看看,论坛博客等等,希望可以帮助到你
1 把jar文件导入到unity中2 在 unity中 AndroidJavaClass jc = new AndroidJavaClass(com.android.unityToandroid.UnityPlayerActivity); AndroidJavaObject jo = jc.GetStatic(m_instance); jo.Call(...
自己测试了一下,使用反射机制,可以调用类里面的静态方法,但是没有找到好的办法调用泛型静态方法,自己测试的代码如下:class Person { public static string Fun(string value) { Console.WriteLine(ttt); return value; } } class Progr...
visual studio导入字体 首先下载好字体包后解压,里面有个ttf文件夹,Windows系统直接选中所有的字体右键点击安装就好了。安装好字体后建议重启下visual studio然后再进入顶部菜单栏
学习unity引擎的话用C#学习UE4引擎的话用C++
当然。面向组件的开发思想即:每一个组件都是一个类。
Maximum属性:用来获取或设置TrackBar控件可表示的范围上限,即最大值。Minimum属性:用来获取或设置TrackBar控件可表示的范围下限,即最小值。SmallChange属性:用来获取或设置当滑块短距离移动时对Value属性进行增减的值。Value属性:用来获取或设置滑块在...
全天制学习的话, 大概15-20天。学会三大语序、数组、类和对象、属性方法、继承多态、抽象或是接口、集合对象。 之后,还需要掌握Unity引擎的基本操作、鼠标事件,以及最后的UGUI知识。如果说背包涉及到网络数据,还需要掌握数据解析、读取、存储。做一个完整...
都是正常的呀 刚运行了一下 可以正常访问
https://q.cnblogs.com/q/121854/ 可以到这个网站上看一下,回答的比较专业.
string sourceFile = @C:\Users\wangwenping\source\repos\GetActivePro\ConsoleApp1\bin\Debug\;string zipfileName = ./debug;ZipFile.CreateFromDirectory(sourceFile, zipfileName);//源路径,目标路径
使用每个数组元素分别和第一个元素进行比较的方式,比较出最大值。
https://q.cnblogs.com/q/127423/ 可以参考这个网站上的内容,回答的比较专业
可以通过NAT内外网址转换得到