C语言-排序-选择排序

思想:每次找一个最小值。

#include <stdlib.h>
#include <stdio.h>

void select_sort(int a[], int n) {
    for(int i=0; i < n-1; i++) {
        int j = i;
        int min = a[j];
        for(int k=i; k < n; k++) {
            if (a[k] < min) {
                j = k;
                min = a[k];
            }
        }
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }
}

int main() {
    int a[7] = {1, 5, 8, 0, 2, 9 ,3};
    select_sort(a, 7);
    for(int i=0; i < 7; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}

  

时间: 2024-10-13 01:41:51

C语言-排序-选择排序的相关文章

算法大神之路----排序(选择排序法)

选择排序法,顾名思义,就是把特定的数据选择出来进行排序. 选择排序法有两种方式 在所有的数据中,当由大到小排序,那么就将最大值放到第一个位置 如果由小到大排序,那么就将最小值放到第一个位置 以由小到大排序举例,当排序时候,扫描整个数据,拿第一个依次与其他做比较,如果其他数据比第一个大,或者相等,那么就不交换,如果其他数据比第一个数小,那么就交换二者的位置,扫描结束后,则从第二个数开始,依次扫描. 方法分析 无论是最坏还是最好情况,甚至是平均情况下,都需要对全部数据进行扫描,找到最大或最小值,因此

01. Java的经典排序--选择排序--冒泡排序--折半查找(二分查找)

Java的经典排序--选择排序--冒泡排序--折半查找 选择排序 选择排序 3 2 1 5 8 0 1 3 2 5 8 1 1 2 3 5 8 2 1 2 3 5 8 3 1 2 3 5 8 public static void main(String[] args) { int[] arr={3,2,1,5,8}; selectSort(arr); for(int i = 0 ; i < arr.length ; i ++){ System.out.println(arr[i]) ; } }

C语言-选择排序

int main(){ //定义一个数组 int a[]={3,5,1,4,9}; //选择排序 for (int i=0; i<5; i++) { for (int j=i+1; j<5; j++) { if (a[i]>a[j]) { int t=a[j]; a[j]=a[i]; a[i]=t; } } } for (int i=0; i<5; i++) { printf("%d\t",a[i]); } printf("\n"); ret

一起talk C栗子吧(第二十九回:C语言实例--选择排序)

各位看官们,大家好,上一回中咱们说的是希尔排序的例子,这一回咱们说的例子是:选择排序.闲话休 提,言归正转.让我们一起talk C栗子吧! 选择排序的原理是:从容器中选择一个最大或者最小的元素,把该元素放到新的容器中,等到容器中的所 有元素都被选择完后,新容器中存放的元素就是有序的. 在实现选择排序时,我通过交换元素的位置,充分利用了容器的空间,而没有创建新的容器,这样可以节 省程序的存储空间.选择排序的实现步骤如下: 1.先实现一个可以从容器中找到最大元素或最小元素的函数,找到后返回该元素在容

C语言-简单选择排序与直接插入排序的实现

/* Name: selectSort and insertSort Copyright: nyist Author: 润青 Date: 01/10/18 19:30 Description: 实现了简单选择排序与直接插入排序 */ #include<stdio.h> int a[100]; int n; void selectSort(); void insertSort(); int main(){ scanf("%d",&n); for(int i=0;i&l

排序--选择排序

//选择排序void Select_Sort(int *a,int n){ int i,j,k,temp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(a[k]>a[j]) k=j; } temp=a[i]; a[i]=a[k]; a[k]=temp; }}

数据结构排序-选择排序

选择排序中的两个经典算法:简单选择排序,堆排序. 简单选排:通过n-1次数据元素的比较,从n-i+1个记录中选择最小的数据,并与第i个数据进行交换,它的时间复杂度是O(n^2). 堆排序:利用堆的特征进行排序,复杂度为O(n*logn). 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int n; 5 6 /* 7 * 选择排序 8 */ 9 void SelectSort(int *array) 10 { 11 int i, j,

排序—选择排序

选择排序 排序要求:把长度为n的数组a按照从小到大的顺序进行排序. 冒泡排序思路:给定一个长度为n的数组a,循环n-1次,每次循环找出a[i]到a[n]中最小数的数,然后把该数和a[i]交换位置. 如何找出最小的数?:循环数组,逐个判断大小,把较小的数的脚标取出来,此次循环结束之后把脚标位置的数和a[i]进行交换. 排序示例: 原数组: 2.0.3.6.8.4.9.5.1.7.第1次循环排序结果: 0.2.3.6.8.4.9.5.1.7.第2次循环排序结果: 0.1.3.6.8.4.9.5.2.

iOS疯狂详解之排序(选择排序/插入排序)

选择排序 1.先求最小值 2.找到位置 3.把位置的数放到有序区 4.重复 for (int j = 0; j < count - 1; j++) { int minIndex = j;// 最小值的角标 for (int i = minIndex + 1; i < count; i++) { if (array[minIndex] > array[i]) { minIndex = i; } } if (minIndex != j) { // 优化 无序区的头 不是第一个 // 最小值

数据结构——排序——选择排序算法

选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不会被移动.选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换.在所有的完全依靠交换去移动元素的排序方