排序

1.定义:
所谓排序,即是整理文件中的内容,使其按照关键字递增或递减的顺序进行排列。
输入:n个记录,n1,n2……,其对应1的关键字为k1,k2……
输出:n(i1),n(i2)……,使得k(i1)<=k(i2)……
(形象点讲就是排排坐,调座位,高在前低在后;或者低在前高在后)
2.排序算法的评价的专业术语
(1)稳定性
     稳定:在排序的文件中,若存在多个关键字相同的记录,经过排序后,这些具有相同
          关键字的记录之间的相对顺序不会发生改变。
     不稳定:若具有相同关键字记录之间的相对次序发生改变,则成为不稳定的排序算法。
(2)复杂度
     时间复杂度:一个算法执行所需消耗的时间。
     空间复杂度:运行完该程序所需要的内存大小
(3)排序方式
     内排序:在排序过程中,整个文件放在内存中进行处理,不涉及数据的内外存交换。
           (适用于记录个数不是很多的小文件)
     外排序:排序过程中要进行数据的内、外存交换。
           (适用于记录个数多,不能将其一次性放入内存中的大文件)

交换排序

思想:对排序记录的关键字进行两两比较,发现次序相反时则进行交换直至没有次序相反的记录。
主要排序方法:冒泡排序、选择排序

冒泡排序

(1)算法描述:
    冒泡排序是一种简单的排序,每次访问要排序的数组序列,一次比较相邻两个元素的大小,
    若顺序错误就进行交换。(这个方法名的由来是小的元素慢慢“浮”在数组顶端,也可称为沉底(大的元素))
 (2)算法的实现
     a.比较相邻的两个元素大小,如果第一个大于第二个元素的大小就进行交换
     b.对每一对相邻的元素都进行同样的操作,从第一对到最后一对,经过此步骤
     最大的元素将是最后的元素。
     c.针对所有的元素重复上述操作,除过最后一个。
     d.重复a-c步骤,直至排序完成
 1 /**
 2 *@Description: 排序算法
 3 *@Author: dyy
 4 */
 5 public class Sort {
 6     public static void main(String[] args) {
 7         int [] arr = new int[]{4,2,1,6,3,6,0,-5,1,1};
 8         bubbleSort(arr);
 9          //遍历打印排序后的数组![image](https://note.youdao.com/favicon.ico)
10         for(int i = 0; i < arr.length;i++){
11             System.out.print(arr[i]+" ");
12         }
13     }
14     /**
15      *冒泡排序
16      * @date: 2018/8/15 11:27
17      */
18     public static void bubbleSort(int[] array){
19         //对数组进行临界判断
20         if(array==null||array.length==0){
21             System.out.println("array is NULL");
22         }
23         for(int i = 0; i < array.length - 1; i++){
24             //进行相邻元素额大小比较(也可循环至array.length-1,
25             // 循环至array.length-i-1是因为没经过一圈的排序后面的元素则就是有序的)
26             for(int j = 0;j < array.length-i-1;j++){
27                 if(array[j]>array[j+1]){
28                     swap(array,j,j+1);
29                 }
30             }
31         }
32     }
33     /**
34      *实现数组中两个数的交换
35      * target为要交换的数组,x,y为要交换数字的下标
36      * @date: 2018/8/15 11:30
37      */
38     public static void swap(int[] target,int x,int y){
39         int temp = target[x];
40         target[x] = target[y];
41         target[y] = temp;
42     }
43 }
View Code

相关文章:

  • 2021-08-11
  • 2021-08-08
  • 2021-10-07
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-13
  • 2021-08-19
  • 2021-11-20
  • 2021-07-17
  • 2021-12-09
相关资源
相似解决方案