using UnityEngine;
namespace QuickSort
{
public class TestQuickSort : MonoBehaviour
{
private void Awake()
{
int[] testArray =new int[100] ;
for (int i = 0; i < testArray.Length; i++)
{
testArray[i] = Random.Range(0,200);
}
QuickSort(testArray,0, testArray.Length-1);
string str = "";
for (int i = 0; i < testArray.Length; i++)
{
str+= testArray[i] + " ";
}
Debug.Log(str);
Debug.Log(TwoPartsSearch(100, testArray,0, testArray.Length));//有序数组
}
//快速排序
private void QuickSort(int[] _array,int _left,int _right) {
if (_left>=_right) {
return;
}
int leftIndex =_left;
int rightIndex = _right;
int midIndex = _left;
int temp;
while(leftIndex< rightIndex)
{
while (leftIndex < rightIndex&&_array[rightIndex] >= _array[midIndex])
{
rightIndex--;
}
temp = _array[midIndex];
_array[midIndex] = _array[rightIndex];
_array[rightIndex] =temp;
midIndex = rightIndex;
while (leftIndex < rightIndex && _array[leftIndex] <= _array[midIndex])
{
leftIndex++;
}
temp = _array[midIndex];
_array[midIndex] = _array[leftIndex];
_array[leftIndex] = temp;
midIndex = leftIndex;
}
QuickSort(_array,_left,midIndex-1);
QuickSort(_array, midIndex+1, _right);
}
//二分查找
private int TwoPartsSearch(int _num,int[] _array,int _left,int _right) {
if (_right<=_left) {
return _array[_left]== _num?_left:-1;
}
int midIndex = (_left + _right)/ 2;
if (_num == _array[midIndex]) {
return midIndex;
}
if (_num == _array[midIndex])
{
return _array[midIndex];
}
if (_num< _array[midIndex]) {
return TwoPartsSearch(_num, _array, _left, midIndex-1);
}
return TwoPartsSearch(_num, _array, midIndex+1, _right);
}
}
}
版权声明:本文为wakakakakakakak原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。