C基础—选择排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

/*
  初始化一个数组
*/
void init_array(int a[], int n) {
    int i;
    srand(time(NULL));
    for (i = 0; i < n; i++)
        a[i] = rand() % 100;
}

/*
 对数组排序
*/
void select_sort(int a[], int n) {
    int i, min, j, tmp;
    for (i = 0; i < n; i++)
    {
        min = i;   //a[i]
        for (j = i + 1; j < n; j++)
        {
            if (a[min] > a[j])
                min = j;
        }
        tmp = a[i];
        a[i] = a[min];
        a[min] = tmp;
    }
}

/*
 打印数组
*/
void show_array(int a[], int n) {
    int i;
    for (i = 0; i < n; i++)
        printf("%5d", a[i]);
    putchar(‘\n‘);
}

/*
* 主函数
*/
int main(void) {
    //1.初始化一个数组
    int arr[N];
    init_array(arr, N);
    show_array(arr, N);
    //2.选择排序此数组,升序排序
    select_sort(arr, N);
    //3.打印输出此数组的值
    show_array(arr, N);
    getchar();
    return 0;
}
时间: 2024-10-23 19:45:36

C基础—选择排序的相关文章

夯实基础——选择排序

物理结构:数组 选择排序分析: 最优时间复杂度:O(n^2) 最坏时间复杂度:O(n^2) 平均时间复杂度:O(n^2) 最差空间复杂度:O(n) 稳定性:不稳定 选择排序函数: int SelectSort(int a[],int length); //选择排序 //每次选最小值放在最前面 int SelectSort(int a[],int length) { int i,j,min; for(i=0;i<length;i++) { min=i; for(j=i;j<length;j++)

Java基础——选择排序、冒泡排序

1.选择排序 原理是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 代码演示: 1 public class Test3 { 2 public static void main(String[] args) { 3 int[] arr = { 3, 9, 81, 8, 5, 10 }; 4 selectSort(arr); 5 print(arr); 6 } 7 8 /* 选择排序:原理是第i个元素和剩余元素的比较次数 */ 9 publ

笔记二:计数排序、选择排序、冒泡排序、插入排序

计数排序 1. 名次 :所谓名次,通俗理解即为该元素在序列中排行老几的意思. 2..如何求名次:依次对每一个元素进行比较,若排在自己(该元素)前面的元素比自己大,则前面的元素在排行计数上加1,反之则自己加1. 3.利用附加数组的计数排序:根据自身名次重新整理一份排序序列存储在附加数组中,然后将附加数组值拷贝到原序列中. 1)代码: template<typename T> void SortClass<T>::rank(T a[], int n, int r[]) { //给数组a

算法基础之排序(2)--选择排序 改进

1 /********************************************************************************************************** 2 * Function : test 3 * Create Date : 2014/03/23 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性

基础算法之排序(2)--选择排序

1 /********************************************************************************************************** 2 * Function : test 3 * Create Date : 2014/03/23 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性

JAVA基础-数组的排序(选择排序和冒泡排序),总结精辟!!!

1.-------寄语 对于初学JAVA的同学来说,排序是在陌生不过的一个基础题了.但是由于自己刚刚步入学习JAVA的世界,很多东西不能很好的理解,导致自己虽然可以敲出代码或者大致能够想明白, 但是对于解决问题的思想并没有很好的深入.(其实一开始学习也没必要太刨根问底,等到自己有一定的基础了,有时间了再研究一下.抱着研究的态度感觉会更好一点.其实大部分目前的 开发者都是经过了一段时间的培训,在培训的过程中,课程速度特别快,有时候我们必须要“不拘小节”,掌握培训中的主流知识才是明智之举.如果你正在

java基础(16)、数组的高级应用--冒泡排序、选择排序

数组排序 目录 一. 冒泡排序 二. 选择排序 三. 优化选择排序 一. 冒泡排序 将数组元素按[从小到大排序]为例 思路:依次对临近的两个元素对比,将最大值放在数组最后:再将剩余的元素对比,大值放在剩余元素的最后. . . 以此循环,最后元素就是按从小到大排列. 1.1. 做之前,先了解这个操作:把数组的最大值放在末尾 将元素1和元素2对比,如果元素1的值大,则元素2和元素1的值互换(此时元素2为大值):再让元素2和元素3对比.  . ( 保留大值).  .  元素3和元素4对比 .  . 

选择排序基础(java实现)

算法实现: 红宝书版本: public class Selection { public static void sort(Comparable[] a) { int N=a.length; for (int i=0;i<N;i++) { int min=i; for(int j=i+1;j<N;j++) if (lessa([j],a[min])) min =j; exch(a,i,min); } } } 基于int数组的实现: public static void selectSort(i

java基础算法之选择排序

选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 时间复杂度  选择排序的交换操作介于 0 和 (n - 1) 次之间.选择排序的比较操作为 n (n - 1) / 2 次之间.选择排序的赋值操作介于 0 和 3 (n - 1) 次之间.比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(