动态数组排序实例
要实现动态数组排序,需要将数据采用链表的形式存储。举例如下:
package com.cn.datastruct; import java.io.IOException; import java.util.Scanner; //动态数组排序实例 public class DynamicArray { //链表结构 static class LinkList{ char data; //数据域 LinkList next; //指针域 } //创建链表 static LinkList CreatLinkList(char ch){ LinkList list = null; list = new LinkList(); list.data = ch; list.next = null; return list; } //插入结点 static void insertList(LinkList list,char e){ LinkList p = new LinkList(); p.data=e; if(list==null){ list=p; p.next=null; }else{ p.next=list.next; list.next=p; } } //动态数组排序 static void dynamicSort(LinkList p){ LinkList q = p; int i,j,k=0; char temp; while(q!=null){ k++; q=q.next; } q=p; for(i=0;i<k-1;i++){ for(j=0;j<k-i-1;j++){ if(q.data>q.next.data){ temp=q.data; q.data=q.next.data; q.next.data=temp; } q=q.next; } q=p; } } public static void main(String[] args) throws IOException { char[] ch; char chc; LinkList list,p; System.out.println("动态数组排序!"); System.out.println("请输入一组字符,以回车结束!"); Scanner input = new Scanner(System.in); ch = input.next().toCharArray(); chc = ch[0]; //输入链表的第一个数据 p=list=CreatLinkList(chc); //创建一个链表结点 for(int i=1;i<ch.length;i++){ insertList(p,ch[i]); } dynamicSort(list); //动态数组排序 System.out.println(); System.out.println("对该数组排序后,得到的结果如下:"); while(list!=null){ System.out.print(list.data+" "); list=list.next; } System.out.println(); } }