首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用ListIterator编写插入排序

是一种在列表中进行排序的算法。插入排序的基本思想是将一个元素插入到已经排好序的部分列表中,直到所有元素都被插入到正确的位置。

下面是使用ListIterator编写插入排序的示例代码:

代码语言:txt
复制
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class InsertionSort {
    public static void insertionSort(List<Integer> list) {
        ListIterator<Integer> iterator = list.listIterator();
        if (!iterator.hasNext()) {
            return;
        }
        iterator.next(); // Skip the first element as it is already considered sorted

        while (iterator.hasNext()) {
            int current = iterator.next();
            ListIterator<Integer> sortedIterator = list.listIterator(iterator.previousIndex());

            while (sortedIterator.hasPrevious() && sortedIterator.previous() > current) {
                // Move the elements greater than the current element one position to the right
                sortedIterator.next();
                sortedIterator.set(sortedIterator.previous());
            }
            sortedIterator.next(); // Move the iterator back to the correct position
            sortedIterator.set(current); // Insert the current element at the correct position
        }
    }

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(5);
        list.add(2);
        list.add(8);
        list.add(1);
        list.add(9);

        System.out.println("Before sorting: " + list);
        insertionSort(list);
        System.out.println("After sorting: " + list);
    }
}

这段代码使用ListIterator来遍历列表,并在遍历过程中进行插入排序。算法的核心部分是两个嵌套的while循环。外层循环遍历未排序的部分列表,内层循环将当前元素插入到已排序的部分列表中的正确位置。

插入排序的优势是简单易懂,对于小规模的列表排序效果较好。然而,对于大规模的列表,插入排序的性能可能不如其他高级排序算法。

插入排序适用于已经部分有序的列表,或者对于实时数据流的排序需求。

腾讯云提供了多个与云计算相关的产品,例如云服务器、云数据库、云存储等。您可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【六大排序详解】开篇 :插入排序 与 希尔排序

    排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 排序存在稳定性,稳定性是评估排序的重要标准。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。 排序可以概括为两大类 、六大排序: 内部排序:数据元素全部放在内存中的排序。 外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

    01
    领券