数据结构与排序
一、数据结构
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、希尔排序法是效率比较高的排序方法,但是我就是不太了解,望有大神指教!。