java单链表冒泡排序_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java单链表冒泡排序

java单链表冒泡排序

 2014/4/19 3:44:13  qq346359669  程序员俱乐部  我要评论(0)
  • 摘要:去面试的一家公司出的面试题,让我回来做完发过去,记录一下节点类://节点类classNode{publicNode(intvalue){this.value=value;}publicNode(){}intvalue;Nodenext;}获得随机的链表//获得一个随机的单链表publicNodegetRandomSingList(){Nodehead=newNode();Noden1=newNode((int)(Math.random()*100));Noden2=newNode((int)
  • 标签:单链表 Java 冒泡排序
去面试的一家公司出的面试题,让我回来做完发过去,记录一下
节点类:
class="java" name="code">
//节点类
class Node{
	public Node(int value){
		this.value = value;
	}
	public Node(){
	}
	int value;
	Node next;
}

获得随机的链表
//获得一个随机的单链表
	public Node getRandomSingList(){
		Node head = new Node();
		Node n1 = new Node((int)(Math.random()*100));
		Node n2 = new Node((int)(Math.random()*100));
		Node n3 = new Node((int)(Math.random()*100));
		Node n4 = new Node((int)(Math.random()*100));
		Node n5 = new Node((int)(Math.random()*100));
		n1.next = n2;
		n2.next = n3;
		n3.next = n4;
		n4.next = n5;
		head.next = n1;
		return head;
	}

打印链表
//打印单链表
	public void printList(Node head){
		String str = "";
		for(Node n = head;n!=null;){
			str = str + " " + n.value;
			n = n.next;
		}
		System.out.println(str);
	}

冒泡排序
//单链表冒泡排序
	public Node blueSortList(Node node){
		System.out.println("blue start...");
		//当前节点
		Node cur = node.next;
		//下一个节点
		Node next = cur.next;
		//前一个节点,两节点n1,n2交换位置时需要前一个节点的next指向n2节点
		Node upperNode = node;
		//一次排序的最后一个节点
		Node lastNode = null;
		int i = 1;
		//当第二个节点为当次排序的最后一个节点时,整体排序结束
		while(node.next != lastNode){
			//当下一个节点为一次次排序的最后一个节点时,本次排序结束。
			if(next == lastNode){
				lastNode = cur;
				cur = node.next;
				next = cur.next;
				upperNode = node;
			}else if(next.value < cur.value){
				cur.next = next.next;
				next.next = cur;
				upperNode.next = next;
				upperNode = next;
			}else{
				upperNode = cur;
				cur = cur.next;
			}
			next = cur.next;
			System.out.println("第" + i++ + "次排列结果:");
			printList(node.next);
		}
		System.out.println("blue end...");
		return node;
	}

调用
Test t = new Test();
Node randomList = t.getRandomSingList();
		System.out.println("排序前:");
		t.printList(randomList.next);
		System.out.println("====================");
		Node sortList = t.blueSortList(randomList);
		System.out.println("====================");
		System.out.println("排序后:");
		t.printList(sortList.next);
上一篇: java遍历文件夹 下一篇: java逆转单链表
发表评论
用户名: 匿名