c#三个数从小到大排序_【C#】从小到大排序(25)

排序的算法

先做一个private static 方法 返回值是 int[]数组

然后写上OrderBy() ;

参数 数组(int[] array)也就是说你给我一个数组

我帮你排个序

private static int[] OrderBy(int[] array) ;

{

}

//不管这个数组有多少个元素

//这个算法是通用的,是所有的数组,只要是int[]数组,它都能用

//所以我们现在写的是一个算法

//假设这个数组是2/8/6/1

private static int[] OrderBy(int[] array) ;

{

//第一个元素array[0], i从1开始,i

for(int i=1;i

{

//用第一个array[0] 和后面的array[i]比,如果array[i]比array[0]小

//那么就交换

if(array[0] > array[i])

{

}

}

//用第二个(array[1])和后面对比取最小

for(int i=2; i

{

if(array[1] > array[i])

{

}

}

//用第三个(array[2])和后面对比取最小

for(int i=3; i

{

if(array[2] > array[i])

{

}

}

}

//因为内不循环要做三遍+

//所以再套一个for循环

//当前索引从0开始(int currentIndex = 0;)

//到哪里结束,倒数第二个(currentIndex< array.Length -1)

//currentIndex自增

for(int currentIndex = 0;currentIndex< array.Length -1;currentIndex++)

{

for(int i=1;i

{

if(array[0] > array[i])

{

}

}

}

//需要与后面比较的元素

//逻辑需要当前的int currentIndex = 0,依次和后面比较

//那么就先取出第一个currentIndex = 0;和后面int i=currentIndex+1比

//再取出第二个,和2后面比;再取出第三个,再和3后面比.....

for(int currentIndex = 0;currentIndex< array.Length -1;currentIndex++)

{

//当前索引(currentIndex)和后面(currentIndex+1)/int i比较

for(int i=currentIndex+1; i

{

//当前索引(currentIndex)和后面比较

if(array[currentIndex] > array[i])

{

//如果.成立进行交换(当前元素大于被比较的元素)

//先明确谁array[currentIndex]跟谁array[i]交换

int temp = array[currentIndex];

array[currentIndex]=array[i]

array[i] = temp;

}

}

}

//最后循环做完了,退出循环

return array;

private static int[] OrderBy(int[] array) ;

{

for(int currentIndex = 0;currentIndex< array.Length -1;currentIndex++)

{

for(int i=currentIndex+1; i

{

if(array[currentIndex] > array[i])

{

int temp = array[currentIndex];

array[currentIndex]=array[i]

array[i] = temp;

}

}

}

return array;

}

这种排序方法,性能上还能优化

这是一种最简单,直观的排序

private static int[] OrderBy(int[] array) ;

{

for(int currentIndex = 0;currentIndex< array.Length -1;currentIndex++)

{

//记录位置要在外层循环的里面,内层循环的外面

//在这里声明一个变量(minIndex = i, i=currentIndex, int minIndex = currentIndex;)

int minIndex = currentIndex;

for(int i=currentIndex+1; i

{

if(array[currentIndex] > array[i])

{

//现在我们在这里记录需要交换的索引[i],不做交换

minIndex = i;

}

}

//运行到这里内层for循环已经执行完毕

//根据比较结果进行交换,从而提高代码效率

}

return array;

}

------------------------------------------

private static int[] OrderBy(int[] array) ;

{

//02....假设第一轮开始比较的时候

for(int currentIndex = 0;currentIndex< array.Length -1;currentIndex++)

{

//03....这里int currentIndex = 0,就是把0给了int minIndex

int minIndex = currentIndex;

//08....接下来第二次比较的时候

for(int i=currentIndex+1; i

{

//01....这里将array[currentIndex]修改成array[minIndex]

//04....这里array[minIndex]就变成了array[0]

//05....然后array[0]和后面array[i]去比

//06....如果一旦发现该交换了

//09....array[minIndex]就是上一次的[i]索引

//10....然后再去和后面array[i]去比

if(array[minIndex] > array[i])

{

//07....minIndex不做交换,而是把i存起来

//11....如果又发现,还要换

//12....再次把i存到minIndex里,

//13....至此根本没有做过交换,什么时候再做交换呢?

minIndex = i;

}

}

//14....这里做交换

//15....需要做一个判断minIndex不等于currentIndex,才做交换

if(minIndex != currentIndex)

{

int temp = array[currentIndex];

array[currentIndex]=array[i]

array[i] = temp;

}

}

return array;

}

---------------

private static int[] OrderBy(int[] array) ;

{

for(int currentIndex = 0;currentIndex< array.Length -1;currentIndex++)

{

int minIndex = currentIndex;

for(int i=currentIndex+1; i

{

if(array[minIndex] > array[i])

{

minIndex = i;

}

}

if(minIndex != currentIndex)

{

int temp = array[currentIndex];

array[currentIndex]=array[i]

array[i] = temp;

}

}

return array;

}

int temp = array[currentIndex];

array[currentIndex]=array[minIndex]

array[minIndex] = temp;

这是冒泡排序法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值