簡單排序外文翻譯_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  外文原文</b></p><p>  Simple Sorting</p><p><b>  Overview </b></p><p>  As soon as you create a significant database, you'll probably think of

2、reasons to sort it in various ways. You need to arrange names in alphabetical order, students by grade, customers by zip code, home sales by price, cities in order of increasing population, countries by GNP, stars by mag

3、nitude, and so on. </p><p>  Sorting data may also be a preliminary step to searching it. As a binary search, which can be applied only to sorted data, is much faster than a linear search. </p><p&

4、gt;  Sorting is so important and potentially so time-consuming,it has been the subject of extensive research in computer science, and some very sophisticated methods have been developed. In this chapter we'll look at

5、 three of the simpler algorithms: the bubble sort, the selection sort, and the insertion sort.</p><p>  The techniques described in this chapter, while unsophisticated and comparatively slow, are nevertheles

6、s worth examining. Besides being easier to understand, they are actually better in some circumstances than the more sophisticated algorithms. </p><p>  The sorting algorithms are implemented as methods of si

7、milar array classes. Be sure to try out the Workshop applets included in this chapter. They are more effective in explaining how the sorting algorithms work than prose and static pictures could ever be. </p><p

8、>  How Would You Do It? </p><p>  Imagine that your kids-league baseball team is lined up on the field, The regulation nine players, plus an extra, have shown up for practice. You want to arrange the play

9、ers in order of increasing height (with the shortest player on the left), for the team picture. How would you go about this sorting process? </p><p>  As a human being, you have advantages over a computer pr

10、ogram. You can see all the kids at once, and you can pick out the tallest kid almost instantly; you don't need to laboriously measure and compare everyone. Also, the kids don't need to occupy particular places. T

11、hey can jostle each other, push each other a little to make room, and stand behind or in front of each other. After some ad hoc rearranging, you would have no trouble in lining up all the kids, </p><p>  A c

12、omputer program isn't able to glance over the data in this way. It can only compare two players at once, because that's how the comparison operators work. This tunnel vision on the part of algorithms will be a re

13、curring theme. Things may seem simple to us humans, but the algorithm can't see the big picture and must, therefore, concentrate on the details and follow some simple rules. </p><p>  The three algorithm

14、s in this chapter all involve two steps, executed over and over until the data is sorted: </p><p>  1. Compare two items. </p><p>  2. Swap two items or copy one item. </p><p>  How

15、ever, each algorithm handles the details in a different way. </p><p>  Bubble Sort </p><p>  The bubble sort is notoriously slow, but it's conceptually the simplest of the sorting algorithms

16、, and for that reason is a good beginning for our exploration of sorting techniques.</p><p>  Bubble-Sorting the Baseball Players </p><p>  Imagine that you're nearsighted (like a computer p

17、rogram) so that you can see only two of the baseball players at the same time, if they're next to each other and if you stand very close to them. Given this impediment, how would you sort them? Let's assume there

18、 are N players, and the positions they're standing in are numbered from 0 on the left to N- 1 on the right. </p><p>  The bubble sort routine works like this. You start at the left end of the line and co

19、mpare the two kids in positions 0 and 1. If the one on the left (in 0) is taller, you swap them. If the one on the right is taller, you don't do anything. Then you move over one position and compare the kids in posit

20、ions 1 and 2. Again, if the one on the left is taller, you swap them. </p><p>  Here are the rules you're following: </p><p>  1. Compare two players. </p><p>  2. If the one on

21、 the left is taller, swap them. </p><p>  3. Move one position right. </p><p>  You continue down the line this way until you reach the right end. You have by no means finished sorting the kids,

22、 but you do know that the tallest kid is on the right. This must be true, because as soon as you encounter the tallest kid, you'll end up swapping him every time you compare two kids, until eventually he (or she) wil

23、l reach the right end of the line. This is why it's called the bubble sort: as the algorithm progresses, the biggest items "bubble up" to the top end of the array. </p><p>  After this first pa

24、ss through all the data, you've made N-1 comparisons and somewhere between 0 and N-1 swaps, depending on the initial arrangement of the players. The item at the end of the array is sorted and won't be moved again

25、. </p><p>  Now you go back and start another pass from the left end of the line. Again you go toward the right, comparing and swapping when appropriate. However, this time you can stop one player short of t

26、he end of the line, at position N-2, because you know the last position, at N-1, already contains the tallest player. This rule could be stated as: </p><p>  When you reach the first sorted player, start ove

27、r at the left end of the line. </p><p>  You continue this process until all the players are in order. This is all much harder to describe than it is to demonstrate, so let's watch the bubbleSort Worksho

28、p applet at work. </p><p>  The bubbleSort Workshop Applet </p><p>  Start the bubbleSort Workshop applet. You'll see something that looks like a bar graph, with the bar heights randomly arr

29、anged, </p><p>  The Run Button </p><p>  This is a two-speed graph: you can either let it run by itself or you can single-step through the process. To get a quick idea of what happens, click th

30、e Run button. The algorithm will bubble sort the bars. When it finishes, in 10 seconds or so, the bars will be sorted, </p><p>  The New Button </p><p>  To do another sort, press the New button

31、. New creates a new set of bars and initializes the sorting routine. Repeated presses of New toggle between two arrangements of bars: a random order as shown in Figure 3.5, and an inverse ordering where the bars are sort

32、ed backward. This inverse ordering provides an extra challenge for many sorting algorithms. </p><p>  The Step Button</p><p>  The real payoff for using the bubbleSort Workshop applet comes when

33、 you single-step through a sort. You'll be able to see exactly how the algorithm carries out each step. Start by creating a new randomly arranged graph with New. You'll see three arrows pointing at different bars

34、. Two arrows, labeled inner and inner+1, are side-by-side on the left. Another arrow, outer, starts on the far right. (The names are chosen to correspond to the inner and outer loop variables in the nested loops used in

35、 </p><p>  Click once on the Step button. You'll see the inner and the inner+1 arrows move together one position to the right, swapping the bars if it's appropriate. These arrows correspond to the tw

36、o players you compared, and possibly swapped, in the baseball scenario. </p><p>  A message under the arrows tells you whether the contents of inner and inner+1 will be swapped, but you know this just from c

37、omparing the bars: if the taller one is on the left, they'll be swapped. Messages at the top of the graph tell you how many swaps and comparisons have been carried out so far. (A complete sort of 10 bars requires 45

38、comparisons and, on the average, about 22 swaps.) </p><p>  Continue pressing Step. Each time inner and inner+1 finish going all the way from 0 to outer, the outer pointer moves one position to the left. At

39、all times during the sorting process, all the bars to the right of outer are sorted; those to the left of (and at) outer are not. </p><p>  The Size Button </p><p>  The Size button toggles betw

40、een 10 bars and 100 bars what the 100 random bars look like. </p><p>  You probably don't want to single-step through the sorting process for 100 bars unless you're unusually patient. Press Run inste

41、ad, and watch how the blue inner and inner+1 pointers seem to find the tallest unsorted bar and carry it down the row to the right, inserting it just to the left of the sorted bars. The bars to the right of the red (long

42、est) arrow are sorted. The bars to the left are beginning to look sorted, but much work remains to be done. </p><p>  If you started a sort with Run and the arrows are whizzing around, you can freeze the pro

43、cess at any point by pressing the Step button. You can then single-step to watch the details of the operation, or press Run again to return to high-speed mode. </p><p>  The Draw Button </p><p>

44、  Sometimes while running the sorting algorithm at full speed, the computer takes time off to perform some other task. This can result in some bars not being drawn. If this happens, you can press the Draw button to redra

45、w all the bars. Doing so pauses the run, so you'll need to press the Run button again to continue. You can press Draw at any time there seems to be a glitch in the display. </p><p>  Java Code for a Bubb

46、le Sort </p><p>  In the bubbleSort.java program, shown in Listing 3.1, a class called ArrayBub </p><p>  encapsulates an array a[], which holds variables of type double. In a more serious prog

47、ram, the data would probably consist of objects, but we use a </p><p>  primitive type for simplicity. (We'll see how objects are sorted in the objectSort.java </p><p>  program in the last

48、section of this chapter.) Also, to reduce the size of the listing, we don't show find() and delete() methods with the ArrayBub class, although they would normally be part of a such a class. </p><p>  Lis

49、ting 3.1 The bubbleSort.java Program </p><p>  // bubbleSort.java </p><p>  // demonstrates bubble sort </p><p>  // to run this program: C>java BubbleSortApp</p><p>

50、;  //------------------------------------------------------------- </p><p><b>  - </b></p><p>  class ArrayBub </p><p><b>  { </b></p><p>  priv

51、ate double[] a; // ref to array a </p><p>  private int nElems; // number of data items </p><p>  //------------------------------------------------------------- </p><p><b>  

52、- </b></p><p>  public ArrayBub(int max) // constructor </p><p><b>  { </b></p><p>  a = new double[max]; // create the array </p><p>  nElems = 0; //

53、 no items yet </p><p><b>  } </b></p><p>  //------------------------------------------------------------- </p><p><b>  - </b></p><p>  public v

54、oid insert(double value) // put element into array </p><p><b>  { </b></p><p>  a[nElems] = value; // insert it </p><p>  nElems++; // increment size </p><p&g

55、t;<b>  } </b></p><p>  //------------------------------------------------------------- </p><p><b>  - </b></p><p>  public void display() // displays array c

56、ontents </p><p><b>  { </b></p><p>  for(int j=0; j<nElems; j++) // for each element, </p><p>  System.out.print(a[j] + " "); // display it </p><

57、p>  System.out.println(""); </p><p><b>  } </b></p><p>  //------------------------------------------------------------- </p><p><b>  - </b><

58、/p><p>  public void bubbleSort() </p><p><b>  { </b></p><p>  int out, in; </p><p>  for(out=nElems-1; out>1; out--) // outer loop </p><p>  (

59、backward) </p><p>  for(in=0; in<out; in++) // inner loop (forward) </p><p>  if( a[in] > a[in+1] ) // out of order? </p><p>  swap(in, in+1); // swap them </p><p&g

60、t;  } // end bubbleSort() </p><p>  //------------------------------------------------------------- </p><p><b>  - </b></p><p>  private void swap(int one, int two) <

61、/p><p><b>  { </b></p><p>  double temp = a[one]; </p><p>  a[one] = a[two]; </p><p>  a[two] = temp; </p><p><b>  } </b></p>&

62、lt;p>  //------------------------------------------------------------- </p><p><b>  - </b></p><p>  } // end class ArrayBub </p><p>  ////////////////////////////////

63、//////////////////////////////// </p><p>  class BubbleSortApp </p><p><b>  { </b></p><p>  public static void main(String[] args) </p><p><b>  {</

64、b></p><p>  int maxSize = 100; // array size </p><p>  ArrayBub arr; // reference to array </p><p>  arr = new ArrayBub(maxSize); // create the array </p><p>  arr.i

65、nsert(77); // insert 10 items </p><p>  arr.insert(99); </p><p>  arr.insert(44); </p><p>  arr.insert(55); </p><p>  arr.insert(22); </p><p>  arr.insert(

66、88); </p><p>  arr.insert(11); </p><p>  arr.insert(00); </p><p>  arr.insert(66); </p><p>  arr.insert(33); </p><p>  arr.display(); // display items <

67、/p><p>  arr.bubbleSort(); // bubble sort them </p><p>  arr.display(); // display them again </p><p>  } // end main() </p><p>  } // end class BubbleSortApp </p>

68、<p>  The constructor and the insert() and display() methods of this class are similar to those we've seen before. However, there's a new method: bubbleSort(). When this method is invoked from main(), the c

69、ontents of the array are rearranged into sorted order. </p><p>  The main() routine inserts 10 items into the array in random order, displays the array, calls bubbleSort() to sort it, and then displays it ag

70、ain. Here's the output: </p><p>  77 99 44 55 22 88 11 0 66 33 </p><p>  0 11 22 33 44 55 66 77 88 99 </p><p>  The bubbleSort() method is only four lines long. Here it is, extr

71、acted from the listing: </p><p>  public void bubbleSort() </p><p><b>  { </b></p><p>  int out, in; </p><p>  for(out=nElems-1; out>1; out--) // outer l

72、oop (backward) </p><p>  for(in=0; in<out; in++) // inner loop (forward) </p><p>  if( a[in] > a[in+1] ) // out of order? </p><p>  swap(in, in+1); // swap them </p>&l

73、t;p>  } // end bubbleSort() </p><p>  The idea is to put the smallest item at the beginning of the array (index 0) and the largest item at the end (index nElems-1). The loop counter out in the outer fo

74、r loop starts at the end of the array, at nElems-1, and decrements itself each time through the loop. </p><p>  The items at indices greater than out are always completely sorted. The out variable moves left

75、 after each pass by in so that items that are already sorted are no longer involved in the algorithm. </p><p>  The inner loop counter in starts at the beginning of the array and increments itself each cycl

76、e of the inner loop, exiting when it reaches out. Within the inner loop, the two array cells pointed to by in and in+1 are compared and swapped if the one in in is larger than the one in in+1. </p><p>  For

77、 clarity, we use a separate swap() method to carry out the swap. It simply exchanges the two values in the two array cells, using a temporary variable to hold the value of the first cell while the first cell takes on th

78、e value in the second, then setting the second cell to the temporary value. Actually, using a separate swap() method may not be a good idea in practice, because the function call adds a small amount of overhead. If you&#

79、39;re writing your own sorting routine, you may prefer to put</p><p>  Invariants </p><p>  In many algorithms there are conditions that remain unchanged as the algorithm proceeds. These conditi

80、ons are called invariants. Recognizing invariants can be useful in understanding the algorithm. In certain situations they may also be helpful in debugging; you can repeatedly check that the invariant is true, and signal

81、 an error if it isn't.</p><p>  In the bubbleSort.java program, the invariant is that the data items to the right of outer are sorted. This remains true throughout the running of the algorithm. (On the f

82、irst pass, nothing has been sorted yet, and there are no items to the right of outer because it starts on the rightmost element.) </p><p>  Efficiency of the Bubble Sort </p><p>  As you can see

83、 by watching the Workshop applet with 10 bars, the inner and inner+1 arrows make 9 comparisons on the first pass, 8 on the second, and so on, down to 1 comparison on the last pass. For 10 items this is </p><p

84、>  9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 45 </p><p>  In general, where N is the number of items in the array, there are N-1 comparisons on the first pass, N-2 on the second, and so on. The formula for the

85、sum of such a series is </p><p>  (N-1) + (N-2) + (N-3) + ... + 1 = N*(N-1)/2 </p><p>  N*(N-1)/2 is 45 when N is 10. </p><p>  Thus the algorithm makes about N2/2 comparisons (igno

86、ring the -1, which doesn't make much difference, especially if N is large). </p><p>  There are fewer swaps than there are comparisons, because two bars are swapped only if they need to be. If the data i

87、s random, a swap is necessary about half the time, so there will be about N2/4 swaps. (Although in the worst case, with the initial data inversely sorted, a swap is necessary with every comparison.) </p><p>

88、  Both swaps and comparisons are proportional to N2. Because constants don't count in Big O notation, we can ignore the 2 and the 4 and say that the bubble sort runs in O(N2) time. This is slow, as you can verify by

89、running the Workshop applet with 100 bars. </p><p>  Whenever you see nested loops such as those in the bubble sort and the other sorting algorithms in this chapter, you can suspect that an algorithm runs in

90、 O(N2) time. The outer loop executes N times, and the inner loop executes N (or perhaps N divided by some constant) times for each cycle of the outer loop. This means you're doing something approximately N*N or N2 ti

91、mes.</p><p>  Source: BS BrogliattiTG Smith. Data Structures and Algorithms, 2013[C].</p><p><b>  中文翻譯</b></p><p><b>  簡單排序</b></p><p><

92、b>  總的看法</b></p><p>  當(dāng)你要創(chuàng)建一個巨大的數(shù)據(jù)庫時,你很容易就會想到各種各樣的數(shù)據(jù)排序方法。你可以用開頭字母順序來將姓名排序,依分數(shù)高低將學(xué)生排序,郵編來給顧客排序,依工資水平來給家庭排序,也可以依人口增長的速度給城市排序,依GDP的大小來給國家排序,甚至依體積的大小來給行星排序,等等。</p><p>  數(shù)據(jù)排序是數(shù)據(jù)查詢的基礎(chǔ)與前提。例如二進

93、制計數(shù)查詢,這項技術(shù)也是應(yīng)用在數(shù)據(jù)排序的基礎(chǔ)上的,因為這樣做會提高排序和查詢的速度。</p><p>  排序問題十分重要并有著良好的發(fā)展?jié)摿?。目前?shù)據(jù)排序在電腦科學(xué)技術(shù)方面已經(jīng)形成了一個單獨的研究領(lǐng)域。截至今天,很多種高精尖端的方法已經(jīng)被開發(fā)出來。在這里我將說一下相對比較簡單的計算機排序程序:冒泡式排序。冒泡式排序法、選擇式排序法、插入式排序法都是數(shù)據(jù)排序方面比較簡單的方法,之所以選擇冒泡式是因為它的簡單適用,

94、更是目前數(shù)據(jù)排序技術(shù)的基礎(chǔ)開端。</p><p>  現(xiàn)在要講的是冒泡式技術(shù),雖然不是十分尖端先進速的相對較慢,但它仍存在研究的價值。除此之外,它在某些情況下,甚至比尖端先進技術(shù)更為實用。</p><p>  計算機排序程序是以一個電腦簡單程序為方法的工具,我確信通過這一部分的對排序程序的提煉,可以比單純文章或靜態(tài)圖片的講解更加生動易理解。</p><p><

95、b>  我們應(yīng)該怎樣做?</b></p><p>  想象一下,訓(xùn)練場上有一個兒童棒球隊,其中有九個正式隊員一個替補隊員,這十個人在準(zhǔn)備練習(xí)。現(xiàn)在你想讓這些隊員從矮到高站成一排準(zhǔn)備拍照,你將如何進行“排序操作”呢?</p><p>  作為人類,你一定會比電腦更先進。首先你可以用眼睛觀察,可以在一瞬間挑出最高的小隊員。這都免去了一一測量和相互比較。然后這些隊員可以相互推擠

96、著自己進行比較,騰出空間,自己站到某個人的前邊或者后邊。排好隊,同時省去占用訓(xùn)練場地的麻煩。就這樣在現(xiàn)實中,給隊員拍照進行的排序是沒有任何阻礙的。</p><p>  但是,一個電腦程序不可能使用這個方法去整理數(shù)據(jù),根據(jù)操作系統(tǒng)的工作原理,它只能馬上比較兩個隊員。這種事情對于人來說十分簡單,但是電腦不可能像人一樣抓住全景來看。因此將細節(jié)歸納可得出以下結(jié)論:</p><p>  電腦程序包含

97、兩個步驟,并反復(fù)執(zhí)行這兩個步驟,這直到排序完成。</p><p><b>  1.比較其中兩項。</b></p><p>  2.交換這兩項或保持原狀。</p><p>  當(dāng)然,有的不同的程序會使用別的方法去整理數(shù)據(jù)。</p><p><b>  冒泡式排序法</b></p><

98、;p>  冒泡式排序法常被冠以“慢”的罵名。但是,它是最簡單的排序概念。正因為如此,研究冒泡式排序?qū)俏覀兲剿麟娔X排序技術(shù)的最好起點。</p><p>  冒泡式排序法排序棒球隊員</p><p>  假設(shè)你是一個近視眼(電腦程序?qū)嶋H上就像一個近視眼的人),以至于你一次只能局限的看到兩個隊員,又或者隊員們離的相對比較遠,你離他們又很近,也可導(dǎo)致你只能看到隊員中的一兩個。在這個困難下

99、,你要怎么給他們排序?,F(xiàn)在假設(shè)讓這十個隊員一字排開,給他們從左到右進行編號,1、2、3……N-1號,冒泡式排序法常規(guī)工作就是這么工作。下面你要從左開始向右移動,去比較0和1位置上的兩個隊員的身高。如果左邊的(0號)的隊員高你就要將兩個隊員交換位置。如果右邊(1號)的高一點,你就維持原狀,繼續(xù)向右移動,去比較1號和2號位置的隊員。同樣如果左邊隊員高,交換,否則,維持原狀。</p><p>  下面是要履行的規(guī)則:&

100、lt;/p><p><b>  1.比較兩個隊員</b></p><p>  2.如果左邊的較高,交換兩者的位置</p><p>  3.向右移動一個位置,繼續(xù)</p><p>  你可以如此進行下去直到你到達隊伍的最右端。這樣的排序除了讓你知道隊伍最右側(cè)站著的是最高的隊員外,沒有其他更多的意義。事實上也是如此,因為當(dāng)你看到

101、最高的隊員時你也還是會讓他比較交換下去,直到他站到隊伍的最右邊為止。這就是它叫做“冒泡式排序”的原因:它的宗旨就是最大的泡先向上升。作為一個電腦程序,就這樣一直“冒泡”直到程序結(jié)束。</p><p>  在第一次篩選整理了這些數(shù)據(jù)后,你一定做了N-1次比較,同時進行了0至N-1次交換。一切都是以最開始的兩個隊員的交換為基礎(chǔ)。這一項在程序的最后已經(jīng)排序完成,不用再去比較、移動。</p><p&g

102、t;  現(xiàn)在你回到原點重新開始,再次從左到右移動,去比較、交換或保持原狀,但這次你會在N-2號隊員位置上結(jié)束此次排序。因為前次比較知道第N-1號的隊員現(xiàn)在一定時最高的隊員,不需要再進行比較。這個規(guī)則就可以像下面所說的一樣:當(dāng)你從最左邊開始時,一直比較到完成,你重復(fù)繼續(xù)這過程,一直到所有對員都按照要求的順序站好。這種描述比演示要復(fù)雜難以理解。所以,我要講一下冒泡排序工作站的程序的工作過程。</p><p>  冒泡

103、排序工作站的程序</p><p>  打開冒泡排序工作站程序,你將看到一些很類似于數(shù)據(jù)曲線的東西,這些數(shù)據(jù)高度隨機的進行排列。</p><p>  點擊運行按鈕有兩個選項,可以讓它自動運行也可以通過輸入程序一步一步進行。若要快速地得到結(jié)果,單擊運行按鈕,計算機程序?qū)⒆詣舆M行冒泡式排序,大約10秒左右這些記錄數(shù)據(jù)就會被排序完成,得到結(jié)果。</p><p><b&

104、gt;  新建按鈕</b></p><p>  同時想要去做另一個排序,就要使用新建按鈕。可以新鍵入一套新的記錄數(shù)據(jù)讓程序從頭開始自己運行常規(guī)的排序。若再單擊切換鍵就可以在兩個記錄地排序中進行切換操作了。其中一個命令在前臺運行,另一個則在后臺運行排序。這兩個不同的命令程序的同時執(zhí)行給電腦排序系統(tǒng)帶來了新的技術(shù)挑戰(zhàn)。</p><p><b>  步進按鈕</b&g

105、t;</p><p>  使用冒泡式排序工作程序的真正價值表現(xiàn)在你排序中的單個步驟你可以精確的看到計算機程序是如何進行每一步的,再使用新建按鈕創(chuàng)建一個新的隨機整理排序后,你將會看到三個指向不同數(shù)據(jù)記錄的指針,被標(biāo)記為inner和inner+1的兩個指針并排在左邊,另一個標(biāo)記為outer的指針從最右邊開始運行。(名字的選擇在程序的重疊循環(huán)中要與內(nèi)部、外部變量保持一致)</p><p>  單

106、擊一次“step”按鈕,你會看到inner和inner+1指針向右移動一個位置。如果合適的話則交換數(shù)據(jù)這些指針始終與你比較的兩個參數(shù)數(shù)據(jù)保持一致并且交換,在上面所說的棒球隊員情況中也應(yīng)該是這樣解釋。</p><p>  指針下面的信息表明inner和inner+的內(nèi)容將被交換,但實際上應(yīng)清楚這只是通過比較數(shù)據(jù):如果更高的隊員在左邊他們將被交換在程序曲線上方的信息告訴你至今有多少個比較,判斷和交換已經(jīng)執(zhí)行(10個數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論