数据结构与排序

    数据结构与排序
一、数据结构
  1.数据结构可以抽象的认为是用来装数据的容器,当然这个装数据的容器还应该具有添加数据    、删除数据、插入数据、访问数据等功能。
  2、我个人认为数据结构是保存数据、删除数据、修改数据、插入数据、遍历数据等方法的集    合。
  3、常见的数据结构有数组、队列、链表、映射等。数组我们都很熟悉,它一般被指定长度和      数据类型,它在内存是一块连续的空间,我们可以通过数组的下标来访问每一个元素。队列    可以认为是一个动态的数组,它可以根据需要来增加长度,类是于排队,来的人只要往后排    就可以了,这个名称的确很形象。

二、排序
    1、排序是我们常用来对一组数据进行的操作。常用的排序方法有冒牌排序法、选择排序法 、插入排序    法、希尔排序法。

   2、冒泡排序法,代码和注解如下:

 //arr为要排序的一组数据
      public static void maopao(int[] arr){
               //temp是用来做交换的中间变量
		int temp;
                //第一个循环每循环一次,便能找出这组数据里最大的数
		for(int i=0;i<arr.length-1;i++){
                     //第二个循环是用来做比较
			for(int j=i+1;j<arr.length;j++){
                                //如果前面的数比后面的数小,则交换它们的值 
				if(arr[i]>arr[j]){
                                       //这是交换过程    
					temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}  
             //排好序后把数组返回
                return arr;     
           }

3、选择排序法,代码和注解如下:

         public static void xuanze(int[]arr){
         //第一个循环每循环一次,便能找出这个数组中最大的数对应的下标
    	  for(int i=0;i<arr.length;i++){
                //用来保存对应每次比较后最小的数,开始时可能不是最小
    		int lowerindex=i;
    		//找出最小的一个引索
    		for(int j=i+1;j<arr.length;j++){
                        //和后面的数比较,如果后面的数大,则用lowerindex保存值大的下标
    			if(arr[j]<arr[lowerindex]){
    				lowerindex=j;
    			}
    		}
    		//交换一下值,使arr[i]比后面的数大
    		int temp=arr[i];
    		arr[i]=arr[lowerindex];
    		arr[lowerindex]=temp;
    	    }
            //排好序后把数组返回
                return arr;     
           }

 
      4.插入排序法

 public static void charu(int[]arr){
    	//排序过程
            for(int i=0;i<arr.length;i++){
    		for(int j=i;j>0;j--){
    			if(arr[i]<arr[j-1]){
    				int temp=arr[j];
    				arr[j]=arr[j-1];
    				arr[j-1]=temp;
    			}
    		}
    	  }
           //排好序后把数组返回
                return arr;   
        }

5、希尔排序法是效率比较高的排序方法,但是我就是不太了解,望有大神指教!。

猜你喜欢

转载自2509477698.iteye.com/blog/1585607