import java.util.Random;
public class LinkBubble {
public Node head;
private Integer num;
public void init(int num,Node node) {
this.num=num;
this.head=node;
}
class Node{
private Integer data;
private Node next;
}
/*使用尾插发创建链表*/
public void createLink() {
Random random=new Random(1);
Node tail=head;
Integer datas[]= {10,25,19,26,5,25,27,19,1,20};
for(int i=0;i<num;i++) {
/*Integer data=(int) (1+Math.random()*(30-1));*/
System.out.print(datas[i]+" ");
Node newNode=new Node();
newNode.data=datas[i];
tail.next=newNode;
tail=newNode;
}
bubbleSort();
}
/*
* 冒泡排序:
* 1.每次循环至少把一个数放到该在的位置
* 2.每排序一次,比较次数减少一次
* 3.当某一次一次都不需要移动时说明已经完全有序了
* 4.需要排序的次数就是原始数组的逆序数
*/
public void bubbleSort() {
for(int i=0;i<num;i++)
{
Node tail=head;
Node tailpre=tail;
boolean isflag=false;
for(
极客时间-排序-冒泡排序(链表实现)
最新推荐文章于 2022-12-24 16:46:01 发布
这篇博客详细介绍了如何使用链表实现冒泡排序,虽然算法复杂度与数组实现相同,但链表操作更为复杂,涉及到临时保存节点以及处理交换条件。文章特别提醒注意内存循环中不同情况下的tail指针更新,以避免空指针错误。最后指出,尽管链表实现增加了复杂性,但若追求效率,数组实现的冒泡排序更优,主要区别在于交换操作的不同。
摘要由CSDN通过智能技术生成