??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧洲精品在线,亚洲国产精品成人AV无码久久综合影院,国产一区二区三区亚洲综合 http://www.tkk7.com/songfei/category/5001.htmlƢ迎艛_的加?/description>zh-cnWed, 28 Feb 2007 17:11:43 GMTWed, 28 Feb 2007 17:11:43 GMT60排序法http://www.tkk7.com/songfei/articles/50435.html天外飞仙天外飞仙Mon, 05 Jun 2006 02:24:00 GMThttp://www.tkk7.com/songfei/articles/50435.htmlhttp://www.tkk7.com/songfei/comments/50435.htmlhttp://www.tkk7.com/songfei/articles/50435.html#Feedback0http://www.tkk7.com/songfei/comments/commentRss/50435.htmlhttp://www.tkk7.com/songfei/services/trackbacks/50435.htmlpublic class Sort {

  public void swap(int a[], int i, int j) {
    int tmp = a[i];
    a[i] = a[j];
    a[j] = tmp;
  }

  public int partition(int a[], int low, int high) {
    int pivot, p_pos, i;
    p_pos = low;
    pivot = a[p_pos];
    for (i = low + 1; i <= high; i++) {
      if (a[i] > pivot) {
        p_pos++;
        swap(a, p_pos, i);
      }
    }
    swap(a, low, p_pos);
    return p_pos;
  }

  public void quicksort(int a[], int low, int high) {
    int pivot;
    if (low < high) {
      pivot = partition(a, low, high);
      quicksort(a, low, pivot - 1);
      quicksort(a, pivot + 1, high);
    }

  }

  public static void main(String args[]) {
    int vec[] = new int[] { 37, 47, 23, -5, 19, 56 };
    int temp;
    //选择排序?Selection Sort)
    long begin = System.currentTimeMillis();
    for (int k = 0; k < 1000000; k++) {
      for (int i = 0; i < vec.length; i++) {
        for (int j = i; j < vec.length; j++) {
          if (vec[j] > vec[i]) {
            temp = vec[i];
            vec[i] = vec[j];
            vec[j] = temp;
          }
        }

      }
    }
    long end = System.currentTimeMillis();
    System.out.println("选择法用时ؓQ? + (end - begin));
    //打印排序好的l果
    for (int i = 0; i < vec.length; i++) {
      System.out.println(vec[i]);
    }
    //  冒排序?Bubble Sort)
    begin = System.currentTimeMillis();
    for (int k = 0; k < 1000000; k++) {
      for (int i = 0; i < vec.length; i++) {
        for (int j = i; j < vec.length - 1; j++) {
          if (vec[j + 1] > vec[j]) {
            temp = vec[j + 1];
            vec[j + 1] = vec[j];
            vec[j] = temp;
          }
        }

      }
    }
    end = System.currentTimeMillis();
    System.out.println("冒法用时ؓQ? + (end - begin));
    //打印排序好的l果
    for (int i = 0; i < vec.length; i++) {
      System.out.println(vec[i]);
    }

    //插入排序?Insertion Sort)
    begin = System.currentTimeMillis();
    for (int k = 0; k < 1000000; k++) {
      for (int i = 1; i < vec.length; i++) {
        int j = i;
        while (vec[j - 1] < vec[i]) {
          vec[j] = vec[j - 1];
          j--;
          if (j <= 0) {
            break;
          }
        }
        vec[j] = vec[i];
      }
    }
    end = System.currentTimeMillis();
    System.out.println("插入法用时ؓQ? + (end - begin));
    //打印排序好的l果
    for (int i = 0; i < vec.length; i++) {
      System.out.println(vec[i]);
    }

    //快速排序法(Quick Sort)

    Sort s = new Sort();
    begin = System.currentTimeMillis();
    for (int k = 0; k < 1000000; k++) {
      s.quicksort(vec, 0, 5);
    }
    end = System.currentTimeMillis();
    System.out.println("快速法用时为:" + (end - begin));
    //打印排序好的l果
    for (int i = 0; i < vec.length; i++) {
      System.out.println(vec[i]);
    }
  }

}



天外飞仙 2006-06-05 10:24 发表评论
]]>
用Java语言实现的各U排?/title><link>http://www.tkk7.com/songfei/articles/38095.html</link><dc:creator>天外飞仙</dc:creator><author>天外飞仙</author><pubDate>Wed, 29 Mar 2006 09:30:00 GMT</pubDate><guid>http://www.tkk7.com/songfei/articles/38095.html</guid><wfw:comment>http://www.tkk7.com/songfei/comments/38095.html</wfw:comment><comments>http://www.tkk7.com/songfei/articles/38095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/songfei/comments/commentRss/38095.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/songfei/services/trackbacks/38095.html</trackback:ping><description><![CDATA[用Java语言实现的各U排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归q排序、堆排序、SortUtil{? <p clear="both">插入排序Q?/p><p class="code">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class InsertSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for(int i=1;i<data.length;i++){<br />            for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }        <br />    }<br /><br />}</p><p>冒排序Q?/p><p class="code">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class BubbleSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for(int i=0;i<data.length;i++){<br />            for(int j=data.length-1;j>i;j--){<br />                if(data[j]<data[j-1]){<br />                    SortUtil.swap(data,j,j-1);<br />                }<br />            }<br />        }<br />    }<br /><br />}</p><p></p><table cellspacing="0" cellpadding="6" width="100%" border="0"><tbody><tr><td><p>选择排序Q?/p><p class="code">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class SelectionSort implements SortUtil.Sort {<br /><br />    /*<br />     * (non-Javadoc)<br />     * <br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for (int i = 0; i < data.length; i++) {<br />            int lowIndex = i;<br />            for (int j = data.length - 1; j > i; j--) {<br />                if (data[j] < data[lowIndex]) {<br />                    lowIndex = j;<br />                }<br />            }<br />            SortUtil.swap(data,i,lowIndex);<br />        }<br />    }<br /><br />}</p><p>Shell排序Q?/p><p class="code">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ShellSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        for(int i=data.length/2;i>2;i/=2){<br />            for(int j=0;j<i;j++){<br />                insertSort(data,j,i);<br />            }<br />        }<br />        insertSort(data,0,1);<br />    }<br /><br />    /**<br />     * @param data<br />     * @param j<br />     * @param i<br />     */<br />    private void insertSort(int[] data, int start, int inc) {<br />        int temp;<br />        for(int i=start+inc;i<data.length;i+=inc){<br />            for(int j=i;(j>=inc)&&(data[j]<data[j-inc]);j-=inc){<br />                SortUtil.swap(data,j,j-inc);<br />            }<br />        }<br />    }<br /><br />}</p><p></p><table cellspacing="0" cellpadding="6" width="100%" border="0"><tbody><tr><td></td></tr></tbody></table><table cellspacing="0" cellpadding="0" width="98%" align="center" border="0"><tbody><tr><td class="article" width="100%" height="62"><p></p><p>快速排序:</p><p class="code">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class QuickSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        quickSort(data,0,data.length-1);        <br />    }<br />    private void quickSort(int[] data,int i,int j){<br />        int pivotIndex=(i+j)/2;<br />        //swap<br />        SortUtil.swap(data,pivotIndex,j);<br />        <br />        int k=partition(data,i-1,j,data[j]);<br />        SortUtil.swap(data,k,j);<br />        if((k-i)>1) quickSort(data,i,k-1);<br />        if((j-k)>1) quickSort(data,k+1,j);<br />        <br />    }<br />    /**<br />     * @param data<br />     * @param i<br />     * @param j<br />     * @return<br />     */<br />    private int partition(int[] data, int l, int r,int pivot) {<br />        do{<br />           while(data[++l]<pivot);<br />           while((r!=0)&&data[--r]>pivot);<br />           SortUtil.swap(data,l,r);<br />        }<br />        while(l<r);<br />        SortUtil.swap(data,l,r);        <br />        return l;<br />    }<br /><br />}</p><p>改进后的快速排序:</p><p class="code">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ImprovedQuickSort implements SortUtil.Sort {<br /><br />    private static int MAX_STACK_SIZE=4096;<br />    private static int THRESHOLD=10;<br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] stack=new int[MAX_STACK_SIZE];<br />        <br />        int top=-1;<br />        int pivot;<br />        int pivotIndex,l,r;<br />        <br />        stack[++top]=0;<br />        stack[++top]=data.length-1;<br />        <br />        while(top>0){<br />            int j=stack[top--];<br />            int i=stack[top--];<br />            <br />            pivotIndex=(i+j)/2;<br />            pivot=data[pivotIndex];<br />            <br />            SortUtil.swap(data,pivotIndex,j);<br />            <br />            //partition<br />            l=i-1;<br />            r=j;<br />            do{<br />                while(data[++l]<pivot);<br />                while((r!=0)&&(data[--r]>pivot));<br />                SortUtil.swap(data,l,r);<br />            }<br />            while(l<r);<br />            SortUtil.swap(data,l,r);<br />            SortUtil.swap(data,l,j);<br />            <br />            if((l-i)>THRESHOLD){<br />                stack[++top]=i;<br />                stack[++top]=l-1;<br />            }<br />            if((j-l)>THRESHOLD){<br />                stack[++top]=l+1;<br />                stack[++top]=j;<br />            }<br />            <br />        }<br />        //new InsertSort().sort(data);<br />        insertSort(data);<br />    }<br />    /**<br />     * @param data<br />     */<br />    private void insertSort(int[] data) {<br />        int temp;<br />        for(int i=1;i<data.length;i++){<br />            for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }       <br />    }<br /><br />}</p></td></tr></tbody></table><p>归ƈ排序Q?/p><p class="code">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class MergeSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] temp=new int[data.length];<br />        mergeSort(data,temp,0,data.length-1);<br />    }<br />    <br />    private void mergeSort(int[] data,int[] temp,int l,int r){<br />        int mid=(l+r)/2;<br />        if(l==r) return ;<br />        mergeSort(data,temp,l,mid);<br />        mergeSort(data,temp,mid+1,r);<br />        for(int i=l;i<=r;i++){<br />            temp[i]=data[i];<br />        }<br />        int i1=l;<br />        int i2=mid+1;<br />        for(int cur=l;cur<=r;cur++){<br />            if(i1==mid+1)<br />                data[cur]=temp[i2++];<br />            else if(i2>r)<br />                data[cur]=temp[i1++];<br />            else if(temp[i1]<temp[i2])<br />                data[cur]=temp[i1++];<br />            else<br />                data[cur]=temp[i2++];            <br />        }<br />    }<br /><br />}</p><p>改进后的归ƈ排序:</p><p class="code">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ImprovedMergeSort implements SortUtil.Sort {<br /><br />    private static final int THRESHOLD = 10;<br /><br />    /*<br />     * (non-Javadoc)<br />     * <br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] temp=new int[data.length];<br />        mergeSort(data,temp,0,data.length-1);<br />    }<br /><br />    private void mergeSort(int[] data, int[] temp, int l, int r) {<br />        int i, j, k;<br />        int mid = (l + r) / 2;<br />        if (l == r)<br />            return;<br />        if ((mid - l) >= THRESHOLD)<br />            mergeSort(data, temp, l, mid);<br />        else<br />            insertSort(data, l, mid - l + 1);<br />        if ((r - mid) > THRESHOLD)<br />            mergeSort(data, temp, mid + 1, r);<br />        else<br />            insertSort(data, mid + 1, r - mid);<br /><br />        for (i = l; i <= mid; i++) {<br />            temp[i] = data[i];<br />        }<br />        for (j = 1; j <= r - mid; j++) {<br />            temp[r - j + 1] = data[j + mid];<br />        }<br />        int a = temp[l];<br />        int b = temp[r];<br />        for (i = l, j = r, k = l; k <= r; k++) {<br />            if (a < b) {<br />                data[k] = temp[i++];<br />                a = temp[i];<br />            } else {<br />                data[k] = temp[j--];<br />                b = temp[j];<br />            }<br />        }<br />    }<br /><br />    /**<br />     * @param data<br />     * @param l<br />     * @param i<br />     */<br />    private void insertSort(int[] data, int start, int len) {<br />        for(int i=start+1;i<start+len;i++){<br />            for(int j=i;(j>start) && data[j]<data[j-1];j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }<br />    }</p><p>}<br /><br />package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class HeapSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        MaxHeap h=new MaxHeap();<br />        h.init(data);<br />        for(int i=0;i<data.length;i++)<br />            h.remove();<br />        System.arraycopy(h.queue,1,data,0,data.length);<br />    }<br /><br />     private static class MaxHeap{         <br />        <br />        void init(int[] data){<br />            this.queue=new int[data.length+1];<br />            for(int i=0;i<data.length;i++){<br />                queue[++size]=data[i];<br />                fixUp(size);<br />            }<br />        }<br />         <br />        private int size=0;<br /><br />        private int[] queue;<br />                <br />        public int get() {<br />            return queue[1];<br />        }<br /><br />        public void remove() {<br />            SortUtil.swap(queue,1,size--);<br />            fixDown(1);<br />        }<br />        //fixdown<br />        private void fixDown(int k) {<br />            int j;<br />            while ((j = k << 1) <= size) {<br />                if (j < size && queue[j]<queue[j+1])<br />                    j++; <br />                if (queue[k]>queue[j]) //不用交换<br />                    break;<br />                SortUtil.swap(queue,j,k);<br />                k = j;<br />            }<br />        }<br />        private void fixUp(int k) {<br />            while (k > 1) {<br />                int j = k >> 1;<br />                if (queue[j]>queue[k])<br />                    break;<br />                SortUtil.swap(queue,j,k);<br />                k = j;<br />            }<br />        }<br /><br />    }<br /><br />}<br /><br /></p><p>SortUtilQ?/p><p class="code">package org.rut.util.algorithm;<br /><br />import org.rut.util.algorithm.support.BubbleSort;<br />import org.rut.util.algorithm.support.HeapSort;<br />import org.rut.util.algorithm.support.ImprovedMergeSort;<br />import org.rut.util.algorithm.support.ImprovedQuickSort;<br />import org.rut.util.algorithm.support.InsertSort;<br />import org.rut.util.algorithm.support.MergeSort;<br />import org.rut.util.algorithm.support.QuickSort;<br />import org.rut.util.algorithm.support.SelectionSort;<br />import org.rut.util.algorithm.support.ShellSort;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class SortUtil {<br />    public final static int INSERT = 1;<br />    public final static int BUBBLE = 2;<br />    public final static int SELECTION = 3;<br />    public final static int SHELL = 4;<br />    public final static int QUICK = 5;<br />    public final static int IMPROVED_QUICK = 6;<br />    public final static int MERGE = 7;<br />    public final static int IMPROVED_MERGE = 8;<br />    public final static int HEAP = 9;<br /><br />    public static void sort(int[] data) {<br />        sort(data, IMPROVED_QUICK);<br />    }<br />    private static String[] name={<br />            "insert", "bubble", "selection", "shell", "quick", "improved_quick", "merge", "improved_merge", "heap"<br />    };<br />    <br />    private static Sort[] impl=new Sort[]{<br />            new InsertSort(),<br />            new BubbleSort(),<br />            new SelectionSort(),<br />            new ShellSort(),<br />            new QuickSort(),<br />            new ImprovedQuickSort(),<br />            new MergeSort(),<br />            new ImprovedMergeSort(),<br />            new HeapSort()<br />    };<br /><br />    public static String toString(int algorithm){<br />        return name[algorithm-1];<br />    }<br />    <br />    public static void sort(int[] data, int algorithm) {<br />        impl[algorithm-1].sort(data);<br />    }<br /><br />    public static interface Sort {<br />        public void sort(int[] data);<br />    }<br /><br />    public static void swap(int[] data, int i, int j) {<br />        int temp = data[i];<br />        data[i] = data[j];<br />        data[j] = temp;<br />    }<br />}</p></td></tr></tbody></table><img src ="http://www.tkk7.com/songfei/aggbug/38095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/songfei/" target="_blank">天外飞仙</a> 2006-03-29 17:30 <a href="http://www.tkk7.com/songfei/articles/38095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据l构http://www.tkk7.com/songfei/articles/20262.html天外飞仙天外飞仙Thu, 17 Nov 2005 08:32:00 GMThttp://www.tkk7.com/songfei/articles/20262.htmlhttp://www.tkk7.com/songfei/comments/20262.htmlhttp://www.tkk7.com/songfei/articles/20262.html#Feedback0http://www.tkk7.com/songfei/comments/commentRss/20262.htmlhttp://www.tkk7.com/songfei/services/trackbacks/20262.html各章节重点勾划:
W?章 概述
本章主要起到总领作用Qؓ读者进行数据结构的学习q行了一些先期铺垫。大家主要注意以下几点:数据l构的基本概念,旉和空间复杂度的概念及度量ҎQ算法设计时的注意事V本章考点不多Q只要稍加注意理解即可?BR>
W一章 U性表
作ؓU性结构的开章节,U性表一章在U性结构的学习乃至整个数据l构学科的学习中Q其作用都是不可低估的。在q一章,W一ơ系l性地引入铑ּ存储的概念,铑ּ存储概念是整个数据l构学科的重中之重,无论哪一章都涉及Cq个概念?BR>
M来说Q线性表一章可供考查的重要考点有以下几个方面:

1.U性表的相兛_本概念,如:前驱、后l、表ѝ空表、首元结点,头结点,头指针等概念?BR>2.U性表的结构特点,主要是指Q除W一及最后一个元素外Q每个结炚w只有一个前和只有一个后l?BR>3.U性表的顺序存储方式及其在具体语言环境下的两种不同实现Q表I间的静态分配和动态分配。静态链表与序表的怼及不同之处?BR>4.U性表的链式存储方式及以下几种常用链表的特点和q算Q单链表、@环链表,双向链表Q双向@环链表。其中,单链表的归ƈ法、@环链表的归ƈ法、双向链表及双向循环链表的插入和删除法{都是较为常见的考查方式。此外,q年来在不少学校中还多次出现要求用递归法实现单链表输出(可能是顺序也可能是倒序Q的问题?BR>在链表的题型中Q经常考到一些诸如:判表I的题。在不同的链表中Q其判表I的方式是不一LQ请大家注意?BR>5.U性表的顺序存储及铑ּ存储情况下,其不同的优缺Ҏ较,卛_各自适用的场合。单链表中设|头指针、@环链表中讄指针而不讄头指针以及烦引存储结构的各自好处?BR>
W二章 栈与队列
栈与队列Q是很多学习DS的同学遇到第一只拦路虎Q很多h从这一章开始坐晕RQ一直晕到现在。所以,理解栈与队列Q是走向DS高手的一条必׃路,?BR>
学习此章前,你可以问一下自己是不是已经知道了以下几点:

1.栈、队列的定义及其相关数据l构的概念,包括Q顺序栈Q链栈,׃n栈,循环队列Q链队等。栈与队列存取数据(h意包括:存和取两部分Q的特点?BR>2.递归法。栈与递归的关p,以及借助栈将递归转向于非递归的经典算法:n!阶乘问题Qfib数列问题Qhanoi问题Q背包问题,二叉树的递归和非递归遍历问题Q图的深度遍历与栈的关系{。其中,涉及到树与图的问题,多半会在树与囄相关章节中进行考查?BR>3.栈的应用Q数D辑ּ的求解,括号的配对等的原理,只作原理性了解,具体要求考查此ؓ题目的算法设计题不多?BR>4.循环队列中判队空、队满条Ӟ循环队列中入队与出队法?BR>
如果你已l对上面的几点了如指掌,栈与队列一章可以不看书了。注意,我说的是可以不看书,q不是可以不作题哦?BR>
W三章 ?BR>l历了栈一章的痛苦煎熬后,l于q来了串一章的x花明?BR>
Ԍ在概念上是比较少的一个章节,也是最Ҏ自学的章节之一Q但正如每个q来人所了解的,KMP法是这一章的重要关隘Q突破此关隘后,走过d是一马^川的大好DS山河了,呵呵?BR>
串一章需要攻破的主要堡垒有:

1.串的基本概念Q串与线性表的关p(串是其元素均为字W型数据的特D线性表Q,IZ与空g的区别,串相{的条g
2.串的基本操作Q以及这些基本函数的使用Q包括:取子Ԍ串连接,串替换,求串长等{。运用串的基本操作去完成特定的算法是很多学校在基本操作上的考查重点?BR>3.序串与链串及块链串的区别和联系Q实现方式?BR>4.KMP法思想。KMP中next数组以及nextval数组的求法。明传l模式匹配算法的不Q明next数组需要改q之外。其中,理解法是核心,会求数组是得分点。不用我多说Q这一节内Ҏ本章的重中之重。可能进行的考查方式是:求next和nextval数组|Ҏ求得的next或nextval数组值给用KMP法q行匚w的匹配过E?BR>

W四章 数组与广义表
学过E序语言的朋友,数组的概忉|们已l不是第一ơ见CQ应该已l“一回生Q二回熟”了Q所以,在概念上Q不会存在太大障。但作ؓ考研评来说Q本章的考查重点可能与大学里的程序语a所x的不太一P下面会作介绍?BR>
q义表的概念Q是数据l构里第一ơ出现的。它是线性表或表元素的有限序列,构成该结构的每个子表或元素也是线性结构的Q所以,q一章也归入U性结构中?BR>
本章的考查重点有:
1.多维数组中某数组元素的position求解。一般是l出数组元素的首元素地址和每个元素占用的地址I间q组l出多维数组的维敎ͼ然后要求你求数组中的某个元素所在的位置?BR>2.明确按行存储和按列存储的区别和联p,q能够按照这两种不同的存储方式求?中类型的题?BR>3.特D矩阵中的元素按相应的换方式存入数l中。这些矩阵包括:对称矩阵Q三角矩阵,h某种特点的稀疏矩늭。熟悉稀疏矩늚三种不同存储方式Q三元组Q带辅助行向量的二元l,十字链表存储。掌握将E疏矩늚三元l或二元l向十字链表q行转换的算法?BR>4.q义表的概念Q特别应该明表头与表尾的定义。这一点,是理解整个广义表一节算法的基础。近来,在一些学校中Q出Cq样一U题目类型:l出Ҏ个广义表L若干个求了若q次的取头和取尾操作后的串|要求求出原广义表L。大家要留意?BR>5.与广义表有关的递归法。由于广义表的定义就是递归的,所以,与广义表有关的算法也常是递归形式的。比如:求表深度Q复制广义表{。这U题目,可以Ҏ不同角度q义表的表现形式q用两种不同的方式解{:一是把一个广义表看作是表头和表尾两部分,分别对表头和表尾q行操作Q二是把一个广义表看作是若q个子表Q分别对每个子表q行操作?BR>
W五章 树与二叉?BR>从对U性结构的研究q度到对树Şl构的研IӞ是数据结构课E学习的一ơ跃变,此次跃变完成的好坏,直接关pd你到实际的考试中是否可以拿到高分,而这所有的一切,最l媄响你的专业课d。所以,树这一章的重要性,已经不说自明了?BR>
M来说Q树一章的知识点包括:
二叉树的概念、性质和存储结构,二叉树遍历的三种法Q递归与非递归Q,在三U基本遍历算法的基础上实C叉树的其它算法,U烦二叉树的概念和线索化法以及U烦化后的查扄法,最优二叉树的概c构成和应用Q树的概念和存储形式Q树与森林的遍历法及其与二叉树遍历法的联p,树与林和二叉树的{换?BR>
下面我们来看考试中对以上知识的主要考查ҎQ?BR>1.二叉树的概念、性质和存储结?BR>考查Ҏ可有Q直接考查二叉树的定义Q让你说明二叉树与普通双分支树的区别Q考查满二叉树和完全二叉树的性质Q普通二叉树的五个性质Q第i层的最多结ҎQ深度ؓk的二叉树的最多结ҎQn0=n2+1的性质Qn个结点的完全二叉树的深度Q顺序存储二叉树时孩子结点与父结点之间的换算关系Q左为:2*iQ右为:2*i+1Q?BR>二叉树的序存储和二叉链表存储的各自优缺点及适用场合Q二叉树的三叉链表表C方法?BR>2.二叉树的三种遍历法
q一知识Ҏ握的好坏Q将直接关系到树一章的法能否理解Q进而关pd树一章的法设计题能否顺利完成。二叉树的遍历算法有三种Q先序,中序和后序。其划分的依据是视其每个法中对根结Ҏ据的讉K序而定。不仅要熟练掌握三种遍历的递归法Q理解其执行的实际步骤,q且应该熟练掌握三种遍历的非递归法。由于二叉树一章的很多法Q可以直接根据三U递归法攚w而来Q比如:求叶子个敎ͼQ所以,掌握了三U遍历的非递归法后,对付诸如Q“利用非递归法求二叉树叶子个数”这L题目׃W如有神了。我会在另一系列文章(::URL::

天外飞仙 2005-11-17 16:32 发表评论
]]>
վ֩ģ壺 һһһˬһһƵѵ| ŷ պ ۺ| ҹƬ| ߹ۿaվ| ޾Ʒ벻߲| һ˿www߸ѿ| ޾Ʒ˾þ| 97ȫѹۿ| С˵ͼƬ| ŮvƬ| ޹Ʒa߹ۿ| Ʒѿþþþ| ŮѾƷëƬ| vƬƵ߹ۿƵ| վþþ| ƷƬ߹ۿ| ޾ƷƵ| ҹþþþþ| Ů18ëƬˮѹۿ| va޵Ӱ| ҹþþӰԺ| þþþùƷվ| ˾Ʒ˳| һëƬ| ձĻ| Ƶ| a vרav| 岻Ƶ| ɫרһ| 鶹Ʒ͵Բ91| ھƷһëƬѿ| ޹Ƶֻ| ߻ɫַ| 99þѹۿ| þҹ޾Ʒ| ҹ| þþƷר| Ʒާѡ벥鶹| ްv| Ѹavһ| պþӰԺ |