一、交换排序
//冒泡排序 static void sort_bubble(int[] a) { int temp=0; for(int i=0;i<a.Length-1;i++){ for(int j=i+1;j<a.Length;j++){ if(a[i]>a[j]){ temp = a[i]; a[i] = a[j]; a[j] = temp; } } } }
//快速排序 static int sourtUnit(int[] array, int low, int hight) { int key = array[low]; while (low < hight) { while (low < hight && array[hight] > key) hight--; array[low] = array[hight]; while (low < hight && array[low] < key) low++; array[hight] = array[low]; } array[low] = key; return low; } static void sort(int[] array, int low, int hight) { if (low < hight) { //print(array); int index = sourtUnit(array, low, hight); sort(array, low, index - 1); sort(array, index + 1, hight); } }
二、选择排序
//选择排序 static void sort_choice(int[] a) { int index = 0,temp=0; for (int i = 0; i < a.Length - 1; i++) { index = i; for (int j = i + 1; j < a.Length; j++) { if (a[index] > a[j]) index = j; } if (index != i) { temp = a[i]; a[i] = a[index]; a[index] = temp; } // print(a); } }
//堆排序 static void InitHeap(int[] a, int index,int length) { int left = 2 * index + 1; int right = 2 * index + 2; int max=index; if (index < length / 2) { if (left < length && a[max] < a[left]) max = left; if (right < length && a[max] < a[right]) max = right; if (max != index) { int temp = a[index]; a[index] = a[max]; a[max] = temp; InitHeap(a, max,length); } } } // int[] c = getArray(100); print(c); for (int i = c.Length / 2 - 1; i >= 0; i--) { InitHeap(c, i,c.Length); } //然后倒序交换 for (int i = c.Length - 1; i >= 0; i--) { int temp = c[0]; c[0] = c[i]; c[i] = temp; InitHeap(c, 0, i); } print(c);
三、插入排序
//直接插入排序 static void sort_insert(int[] a) { int index = 0, temp = 0; for (int i = 1; i < a.Length; i++) { index = i; temp = a[i]; while (index > 0 && a[index - 1] > temp) { a[index] = a[index - 1]; index--; } a[index] = temp; } }
//希尔排序 static void sort_shell_insert(int[] a) { int length = a.Length; int interval = length / 2; while (interval != 0) { for (int i = interval; i < length; i++) { int t = a[i]; int j = i - interval; while (j >= 0 && t < a[j]) { a[j + interval] = a[j]; j = j - interval; } a[j + interval] = t; } interval /= 2; } }
四、基数排序
public static void baseSort(int[] a,int d){ //创建一个二维数组 int [][]temp=new int[10][a.length]; int[] length=new int[a.length]; //循环次数 int div=1;//除数 int m=0;//控制循环次数 int k=0;//赋值的时候变量 //d循环次数最大数的位数 while(m<d){ for(int i=0;i<a.length;i++){ int lsd=(a[i]/div)%10; temp[lsd][length[lsd]]=a[i]; length[lsd]++; } for(int i=0;i<10;i++){ if(length[i]!=0){ for(int j=0;j<length[i];j++) a[k++]=temp[i][j]; } length[i]=0; } System.out.println(Arrays.toString(a)); m++; div*=10; k=0; } }
相关推荐
### 排序及基本算法详解 #### 一、排序的基本概念与分类 排序是一种常见的数据组织方式,旨在根据数据的某一属性(关键字)将其按升序或降序排列。这一过程不仅限于数字,也可以应用于字母、字符串或其他任何可...
该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...
在计算机科学领域中,排序算法是一种基本的算法,它可以将数据按照一定的顺序排列,以便更好地存储、检索和处理数据。排序算法的速度和效率对程序的性能有着至关重要的影响。 1.冒泡排序算法 冒泡排序算法是一种...
本文将详细介绍七种基本排序算法,包括插入排序、快速排序、希尔排序、归并排序、选择排序、冒泡排序(以及双向冒泡排序)和堆排序,这些都是用C语言实现的。对于初学者来说,理解和掌握这些算法有助于提升编程技能...
冒泡排序基本思想和算法 冒泡排序是交换排序的一种基本思想,通过比较和交换记录的关键字,达到排序的目的。下面对冒泡排序的基本思想、算法和性能进行详细的分析。 冒泡排序基本思想 冒泡排序的基本思想是:两两...
根据提供的信息,我们可以总结出以下关于八种基本排序算法中的两种——冒泡排序(Bubble Sort)与插入排序(Insert Sort)的知识点。 ### 冒泡排序(Bubble Sort) #### 定义 冒泡排序是一种简单的排序算法。它...
排序算法是计算机科学中最基础和重要的算法之一,用于将一组数据按照特定的顺序进行排列。本文将对几种常见的内部排序算法和外部排序算法...理解这些基本的排序算法及其特性,对于任何IT专业人员来说都是非常必要的。
本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...
本文将探讨如何使用这两种语言实现几种基本的排序算法:冒泡排序、选择排序,以及两种全比较排序(并行和串行)。 首先,让我们了解一下排序算法。排序是计算机科学中最基础的操作之一,它涉及到将一组数据按照特定...
在计算机科学中,排序算法是数据结构领域的重要组成部分,它涉及到如何有效地重新排列一组数据,使其...在掌握这些基本算法后,还可以探索其他高级排序算法,如归并排序、计数排序、基数排序等,以应对更多样化的需求。
在数据结构中,排序算法是最基本也是最重要的一部分。各种排序算法的性能和选择直接影响着数据处理的效率和准确性。本文将对快速排序、归并排序、堆排序等常见排序算法进行比较和分析,探讨它们的优缺点和适用场景。...
选择排序是一种简单的排序算法,其基本思想是每次从未排序的元素中找出最小(或最大)的元素,将其放置到已排序序列的末尾。时间复杂度为O(n^2),虽然简单易懂,但在处理大数据量时效率较低。 **2. 冒泡排序(Bubble...
排序算法是计算机科学中的一种基本算法,用于对数据进行排序。在各种排序算法中,每种算法都有其特点和应用场景。本文将对10种经典的排序算法进行总结,并对每种算法的时间复杂度、空间复杂度和适用场景进行分析。 ...
排序算法是计算机科学中的一种基本算法,用于将数据结构按照某种顺序排列。常见的排序算法有插入排序、快速排序、选择堆积排序法等。 插入排序算法是一种简单的排序算法,适用于小规模的数据结构。该算法将数据结构...
快速排序的基本思想是选取一个基准值,将数组分为两部分:一部分的元素都小于基准,另一部分的元素都大于或等于基准。然后对这两部分分别进行快速排序。快速排序的平均时间复杂度为O(n log n),即使在最坏的情况下,...
其基本思想是选取一个基准元素,将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素都大于基准,然后对这两部分递归地进行快速排序。 2. **堆排序**:堆排序利用了数据结构——二叉堆的概念。它首先将...
初学者可以通过学习冒泡排序来掌握排序算法的基本思路,为进一步学习更复杂的算法打下基础。 综上所述,冒泡排序是一种基础的排序算法,它通过重复遍历数组并交换逆序相邻元素来实现排序。尽管效率较低,但其简单...
Java中实现冒泡排序的基本思路是使用两个嵌套循环,外层循环控制排序轮数,内层循环用于每轮的比较和交换。 2. **选择排序(Selection Sort)**:选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大...
在Android应用中实现图形化排序算法,首先需要了解各种基本的排序算法,例如冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序等。这些算法各有特点,如冒泡排序的时间复杂度为O(n^2),适用于小规模数据...
选择排序是一种不稳定的排序算法,其基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。这个过程...