常用的排序方式

常用的排序方式

  • 交换类排序
      • 1、冒泡排序
      • 2、快速排序
  • 插入类排序
      • 1、简单插入排序法
      • 2、希尔排序法
  • 选择类排序
      • 1、简单选择排序法
      • 2、推排序法

交换类排序

1、冒泡排序

其思想是相邻的元素两两比较

使用冒泡排序时,一趟只能选出一个最值,有n个元素最多就要执行 (n - 1)次比较

常用的排序方式_第1张图片

#include "stdio.h"
 
void main()
{ 
      int a[10]; 
      int i, j, temp; 

      printf("Please input ten numbers: \n"); 
      for (i = 0; i < 10; i++) 
            scanf("%d", &a[i]); 
 

      for (i = 0; i < 9; i++) // 10个数,10 - 1轮冒泡,每一轮都将当前最大的数推到最后 
      { 
            for (j = 0; j < 9 - i; j++) // 9 - i,意思是每当经过一轮冒泡后,就减少一次比较 
            
				if (a[j] > a[j+1]) 
				{ 
					  temp = a[j]; 
					  a[j] = a[j+1]; 
					  a[j+1] = temp; 
				} 
      } 
  
      for (i = 0; i < 10; i++) 
            printf("%d\n", a[i]); 
}

2、快速排序

就是给基准数据找其正确索引位置的过程.

每趟排序时选出一个基准值,然后将所有元素与该基准值比较,并按大小分成左右两堆,然后递归执行该过程,直到所有元素都完成排序。

1>先从数列中取出一个数作为基准数。
2>分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3>再对左右区间重复第二步,直到各区间只有一个数。

常用的排序方式_第2张图片

插入类排序

1、简单插入排序法

2、希尔排序法

选择类排序

1、简单选择排序法

2、推排序法

你可能感兴趣的:(#,算法与数据结构,排序算法,算法,数据结构)