java – 如何重新排序已排序的数组,其中一个元素更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何重新排序已排序的数组,其中一个元素更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1872字,纯文字阅读大概需要3分钟。
内容图文
![java – 如何重新排序已排序的数组,其中一个元素更新](/upload/InfoBanner/zyjiaocheng/770/90d07132df404dd5bc14836f99ed73b7.jpg)
我有恒定大小的数组(现实生活中大小= 20),允许重复例如:
1 2 2 3 3 4 5 6 7 8 9
现在只有一个元素更新:
1 5 2 3 3 4 5 6 7 8 9
我需要求助这个数组.我应该只使用bubblesort吗?
更新我不知道怎么称呼我写的东西.但我认为不可能更快地排序.欢迎评论!
// array is already almost sorted and INCREASING, element at pos need to be inserted to the right place
private void SortQuotes(List<Quote> quoteList, int pos)
{
var quoteToMove = quoteList[pos];
if (pos == 0 || quoteList[pos - 1].Price < quoteToMove.Price)
{
MoveElementsDown(quoteList, pos);
} else if (pos == quoteList.Count - 1 || quoteList[pos + 1].Price > quoteToMove.Price)
{
MoveElementsUp(quoteList, pos);
}
}
private void MoveElementsDown(List<Quote> quoteList, int pos)
{
var quoteToInsert = quoteList[pos];
var price = quoteToInsert.Price;
for (int i = pos - 1; i >= 0; i--)
{
var nextQuote = quoteList[i];
if (nextQuote.Price > price)
{
quoteList[i + 1] = quoteList[i];
if (i == 0) // last element
{
quoteList[i] = quoteToInsert;
}
}
else
{
quoteList[i + 1] = quoteToInsert;
break;
}
}
}
private void MoveElementsUp(List<Quote> quoteList, int pos)
{
var quoteToInsert = quoteList[pos];
var price = quoteToInsert.Price;
for (int i = pos + 1; i < quoteList.Count; i++)
{
var nextQuote = quoteList[i];
if (nextQuote.Price < price)
{
quoteList[i - 1] = quoteList[i];
if (i == quoteList.Count - 1) // last element
{
quoteList[i] = quoteToInsert;
}
}
else
{
quoteList[i - 1] = quoteToInsert;
break;
}
}
}
更新我知道哪个元素是奇数,即它的位置是已知的!
解决方法:
该解决方案将每个元素移位一,直到找到奇数元素的右侧位置.由于它已在第一步中被覆盖,因此将其保存在临时变量“h”中,然后写入最终位置.它需要最少的比较和转移操作:
static void MoveOddElementToRightPosition(int[] a, int oddPosition)
{
int h = a[oddPosition];
int i;
if (h > a[oddPosition + 1])
for (i = oddPosition; i < a.Count()-1 && a[i+1] <= h; i++)
a[i] = a[i+1];
else
for (i = oddPosition; i > 0 && a[i-1] >= h; i--)
a[i] = a[i - 1];
a[i] = h;
}
内容总结
以上是互联网集市为您收集整理的java – 如何重新排序已排序的数组,其中一个元素更新全部内容,希望文章能够帮你解决java – 如何重新排序已排序的数组,其中一个元素更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。