1. 在无序数组里寻找第k小的数,不许排序
· 取数组中第一个数为参照数pivot
· 遍历数组,比pivot小的放在left数组中,比pivot大的放在right数组中
· 判断left数组的长度,如果left数组的长度等于k-1,则第k小的数为pivot,
如果left数组长度大于k,则第k小的数在left数组中,则在left数组中继续用前面的步骤寻找第k小的数
如果left数组长度k-1,则第k小的数载right数组中,则在right数组中用前面的步骤寻找第right.Count - k小的数。
void Func(List<int> ta, int ka)
{
int pivot = ta[0];
List<int> leftT = new List<int>();
List<int> rightT = new List<int>();
for (int i = 0; i < ta.Count; i++)
{
if (ta[i] < pivot)
{
leftT.Add(ta[i]);
}
else if (ta[i] > pivot)
{
rightT.Add(ta[i]);
}
else
{ }
}
if (leftT.Count == ka - 1)
{
print("The No." + k + " smallest number is " + pivot);
}
else if (leftT.Count > ka - 1)
{
Func(leftT, ka);
}
else if (leftT.Count < ka - 1)
{
Func(rightT, ka - leftT.Count - 1);
}
}
2. c#字符串转ASCII码
byte[] array = System.Text.Encoding.ASCII.GetBytes(str);
3. c#ASCII码转字符串
byte[] array = new byte[L.Count];
for (int i = 0; i < L.Count; i++)
{
array[i] = (byte)(Convert.ToInt32(L[i]));
}
newStr = Convert.ToString(System.Text.Encoding.ASCII.GetString(array));