极快排序 TypeScript C++ lua 实现 分治法(Divide-and-ConquerMethod)。 效率 O(N*logN)
原理不想说了,都是老生常谈。 我的理解就是: 每次遍历一次的时候 把大的放到右边,小的放到左边,再从这个中间值Key开始 再查一次左边的 和 右边的 。 递归的用法而已。
TypeScript
var arry:number[] = [2,9,3,5,4,6,7,8,1]
console.log(arry)
function quickSort( temp:number[] ,left: number,right: number) {
if( left < right)
{
var key : number = temp[left];
var i : number = left
var j : number = right
while( i<j )
{
while( i<j && temp[j] >= key ) //小的放到左边
{
j--
}
if( i<j)
{
temp[i ] = temp[j]
}
while(i<j && temp[i] < key )
{
i
}
if( i<j)
{
temp[j--] = temp[i]
}
}
temp[i] = key
console.log(arry)
quickSort(temp,left,i-1)
quickSort(temp,i 1,right)
}
}
quickSort(arry,0,8);
console.log(arry)
C
int a[] = { 2,9,3,5,4,6,7,8,1};
this->stepA(a,0,8);
void HttpConfigArrangeAdvertisementForInserAD::stepA(int arr[], int left, int right )
{
if (left < right) {
int key = arr[left];
int i = left;
int j = right;
while (i < j)
{
while (i < j && arr[j] >= key) // 从右向左找第一个小于key的数
{
j--;
}
if (i < j)
{
arr[i ] = arr[j];
}
while (i < j && arr[i] < key) // 从左向右找第一个大于等于key的数
{
i ;
}
if (i < j)
{
arr[j--] = arr[i];
}
}
arr[i] = key; //退出时,i等于j。将key填到这个坑中。
stepA(arr, left, i- 1);
stepA(arr, i 1, right);
}
Lua
local arr= { 2,9,3,5,4,6,7,8,1};
dump(arr,"排序前372 ");
local function quickSort(tempArr,left ,right )
if left<right then
local key = tempArr[left];
local i= left;
local j =right
while i < j do
while i<j and tempArr[right] >= key do --从右到左 目的是吧小的值放到左边 找到一个就可以了
j = j-1;
end
if i<j then
tempArr[i] = tempArr[j]
i = i 1;
end
while i<j and tempArr[i] < key do --从左到右,目的把大的值放到右边 找到一个就可以了
i = i 1;
end
if i<j then
tempArr[j] = tempArr[i]
j = j-1;
end
end
tempArr[i] = key
quickSort(tempArr,left, i-1 );
quickSort(tempArr,i 1, right );
end
end
quickSort(arr, 1,9 );
dump(arr,"排序后 378");
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgghija
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13