Java 删除插入排序中的重复项

Java 删除插入排序中的重复项,java,sorting,insertion-sort,Java,Sorting,Insertion Sort,我基本上是在处理下面的问题,我试图改变insert排序,以便它也可以从计数器中删除重复项。以下是插入排序 public void insertSort() { for (int i = 1; i < nElems; i++) { int temp = a[i]; int j = i; while (j > 0 && temp <= a[j - 1]) {

我基本上是在处理下面的问题,我试图改变insert排序,以便它也可以从计数器中删除重复项。以下是插入排序

public void insertSort() {

        for (int i = 1; i < nElems; i++) {

            int temp = a[i];
            int j = i;

            while (j > 0 && temp <= a[j - 1]) {

                a[j] = a[j - 1];

                j--;
            }

            a[j] = temp;
        }

    }
public void insertSort(){
for(int i=1;iwhile(j>0&&temp您只需要在while循环中添加一行

while (j > 0 && temp <= a[j - 1]) {
    if(temp == a[j - 1]) temp = -1;
    a[j] = a[j - 1];

    j--;
}
while(j>0&&temp
public void InsertSort()
{
int t,j;
对于(int i=1;i<\u leght;i++)
{
t=_arr[i];
对于(j=i;j>0;)
{
如果(_arr[j-1]==t)t=-1;
如果(_arr[j-1]>t)
{
_arr[j]=_arr[j-1];
j--;
}
否则就断了;
}
_arr[j]=t;
}
}

你正在阅读的书的名字是什么?Java中的数据结构和算法!@KickButtowski关于我发布的问题有什么建议吗?:)我即将离职,稍后再看一看。你只需要在insertSort方法中插入一行。这行是
if(temp==a[j-1])temp=-1;
。现在您只需要找出放置它的位置。在选择排序中,您正在搜索整个列表以查找最小或最大的元素。当然,您可以在该阶段检查元素是否存在多次,并将所有其他元素设置为-1。尽管在这种情况下,您可能应该始终搜索最大的元素,而不是最小的。然后所有的-1将结束在数组的末尾。是的,这非常有意义,非常光滑。
public void InsertSort()
{
    int t, j;
    for (int i = 1; i < _leght; i++)
    {
       t = _arr[i];
       for (j = i; j > 0; )
       {
            if (_arr[j - 1] == t) t = -1;
            if (_arr[j - 1] > t)
            {
                  _arr[j] = _arr[j - 1];
                  j--;
             }
             else break;
        }
        _arr[j] = t;
     }
}