js 定义变量不加var普通变量的时候为什么要加个i

& & 哪里都有讲快速排序的,啥的,我也看了很多篇别人写的文章。但是好多文章里面都是直接就说拿两个i,j变量,就开始比较了。
& & 快速排序,简单的说就是,先确定一个基准,然后就把比这个基准大的放到一边,比这个基准小的放到一边。放到一边的时候,是不管它是有序还是无序的。接下来在把之前的操作重复一下,其实就是一个递归的过程。
& & 为什么要定义两个变量进行快速排序呢?
& & 其实是这样的,快速排序,为啥叫快速排序呢,快在哪里,快在它减少了交换次数,还有一个原因就是快速排序是在快速排序是不用新开内存的,可以减少内存的使用。它就是在原地完成排序的。可能这样讲,你还是不明白,那我们来进行假设,如果只定义一个变量i的话呢,然后进行比较大小,那不就成了冒泡排序了吗。刚刚还说了快速排序是在原地完成排序的,不需要另外开辟空间资源的。你单独定义一个变量显然是不能实现的。
& &为啥要定义如果基准数量在这边,那么就要先从另外一边开始扫描呢。
& &先想想如果是放在同一边的话,那不就成了个冒泡排序吗。
& &那么接下来我就分享下,我理解的快速排序给大家,请大家多多指教。
& &首先,比如我们拿到一个数组 int [] arr=new int(){1,3,5,2,4,8,6,7}。按照我们刚刚的做法,
class Program
static void Main(string[] args)
var arr = new int[] { <span style="color: #, <span style="color: #, <span style="color: #, <span style="color: #, <span style="color: #, <span style="color: #0, <span style="color: #, <span style="color: # };
quick_sort(arr, <span style="color: #, arr.Length - <span style="color: #);
foreach (var i in arr)
Console.WriteLine(i);
Console.ReadKey();
static void quick_sort(int[] s, int l, int r)
//递归调用
if (l & r)
int i = AdjustArray(s, l, r);//先成挖坑填数法调整s[]
quick_sort(s, l, i - <span style="color: #); // 递归调用
quick_sort(s, i + <span style="color: #, r);
/// &summary&
/// 按照基准数进行调整数组
/// &/summary&
/// &param name="arr"&&/param&
/// &param name="left"&&/param&
/// &param name="right"&&/param&
/// &returns&&/returns&
static int AdjustArray(int[] arr, int left, int right)
int temp = arr[left]; //假设第一个为基准树
while (left & right)
//当左边小于右边,并且基准数小于右边的那个数。
if (left & right && temp &= arr[right])
right--; //把指针像前面移动
//当左边小于右边,并且基准数大于右边的那个数。
if (left & right && temp &= arr[right])
arr[left] = arr[right]; //说明右边的数比基准数小,那要放到左边来
left++;//然后接下来就是左边移动一下了++
//当左边小于右边,并且基准数大于左边的那个数。
if (left & right && temp &= arr[left])
//当左边小于右边,并且基准数小于左边的那个数。
if (left & right && temp &= arr[left])
arr[right] = arr[left];
arr[left] =
阅读(...) 评论()}

我要回帖

更多关于 随机变量的定义 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信