当前位置: 首页 > 编程笔记 >

简单了解C语言中直接插入排序与直接选择排序实现

祁修诚
2023-03-14
本文向大家介绍简单了解C语言中直接插入排序与直接选择排序实现,包括了简单了解C语言中直接插入排序与直接选择排序实现的使用技巧和注意事项,需要的朋友参考一下

直接插入排序
基本思路:
1. 从a[0]开始,也就是从1个元素开始是有序的,a[1]~a[n-1]是无序的。
2. 从a[1]开始并入前面有序的数组,直到n-1。

#include <stdio.h> 
#define N 5 
 
void insertsort(int a[], int n); 
void swap(int *x, int *y); 
 
void insertsort(int a[], int n){ 
  int i,j; 
  for(i=1; i<n; i++){ 
    for(j=i; j>0 && a[j]<a[j-1]; j--){ 
      swap(&a[j], &a[j-1]); 
    }   
  } 
} 
 
void swap(int *x, int *y){ 
  int i = *x; 
  *x = *y; 
  *y = i; 
} 
 
int main(void){ 
  int a[N] = {2, 5, 3, 1, 8}; 
  insertsort(a, N); 
  int i; 
  for(i=0; i<N; i++) 
    printf("%d ", a[i]); 
  return 0; 
} 


直接选择排序

基本思路:
1. 从1开始通过对比找出最小的数的下标。然后把这个下标的值和0交换。
2. 循环把值交换到1 2 3 ... n-1。

#include <stdio.h> 
#define N 5 
 
void selectsort(int a[], int n); 
void swap(int *x, int *y); 
 
void selectsort(int a[], int n){ 
  int i,j; 
  for(i=0; i<n; i++){ 
    int min = i; 
    for(j=i+1; j<n; j++){ 
      if(a[j] < a[min]){ 
        min = j; 
      } 
    } 
    swap(&a[i], &a[min]); 
  } 
} 
 
void swap(int *x, int *y){ 
  int i = *x; 
  *x = *y; 
  *y = i; 
} 
 
int main(void){ 
  int a[N] = {2, 5, 3, 1, 8}; 
  selectsort(a, N); 
  int i; 
  for(i=0; i<N; i++) 
    printf("%d ", a[i]); 
  return 0; 
} 


 类似资料:
  • 直接插入排序的基本思想是:将 n 个有序数存放在数组 a 中,要插入的数为 x,首先确定 x 插在数组中的位置 p,然后将 p 之后的元素都向后移一个位置,空出 a(p),将 x 放入 a(p),这样可实现插入 x 后仍然有序。 例 1 本例子通过直接插入的方法对上述例子中的 number 数组进行排序。创建一个 Test27 类文件,在 main() 方法中开始编码,具体实现代码如下: 在上述代

  • 直接插入排序是比较简单的排序算法,它主要是将我们要排序的序列分成两个部分,一个有序一个无序,然后将无序序列中的值依次插入到有序序列中。 这么讲如果不能理解,我们拿例子去讲,假如有序列8 7 2 1 5 9 3这么一个序列,如下表所示。我们要将这个序列进行升序排序,接下来演示插入排序的过程。 初始序列 8 7 2 1 5 9 3 第一次排序 从前往后排,将8作为我们的有序序列的第一个值,而8后面的值

  • 我试图理解插入排序和选择排序之间的区别。 它们似乎都有两个组成部分:未排序列表和排序列表。它们似乎都从未排序列表中提取一个元素,并将其放在排序列表的适当位置。我看到一些网站/书籍说选择排序通过一次交换一个来实现这一点,而插入排序只是找到合适的位置并插入它。但是,我看到其他文章说了些什么,说插入排序也交换。因此,我感到困惑。有任何规范的来源吗?

  • 本文向大家介绍Java实现直接插入排序和折半插入排序算法示例,包括了Java实现直接插入排序和折半插入排序算法示例的使用技巧和注意事项,需要的朋友参考一下 直接插入排序​ 1 排序思想: 将待排序的记录Ri插入到已经排好序的记录R1,R2,……,R(N-1)中。 对于一个随机序列而言,就是从第二个元素开始,依次将这个元素插入到它之前的元素中的相应位置。它之前的元素已经排好序。 第1次排序:将第2个

  • 本文向大家介绍Python实现冒泡,插入,选择排序简单实例,包括了Python实现冒泡,插入,选择排序简单实例的使用技巧和注意事项,需要的朋友参考一下 本文所述的Python实现冒泡,插入,选择排序简单实例比较适合Python初学者从基础开始学习数据结构和算法,示例简单易懂,具体代码如下: 感兴趣的朋友可以动手测试一下本文实例,相信会有新的收获。

  • 本文向大家介绍C语言实现堆排序的简单实例,包括了C语言实现堆排序的简单实例的使用技巧和注意事项,需要的朋友参考一下 本文通过一个C语言实现堆排序的简单实例,帮助大家抛开复杂的概念,更好的理解堆排序。 实例代码如下: