是一种在列表中进行排序的算法。插入排序的基本思想是将一个元素插入到已经排好序的部分列表中,直到所有元素都被插入到正确的位置。
下面是使用ListIterator编写插入排序的示例代码:
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/)了解更多关于这些产品的详细信息。
领取专属 10元无门槛券
手把手带您无忧上云