简单选择排序

选择排序时间复杂度也为O(n^2)

算法思想:

选择排序即每次length-i的长度内选择一个最小的元素,与第一个进行替换,这样大循环length次后,就可以得到排好序的数组了。

主要代码:

void selectSort(int *arr,int length){
    int i,j,k,min;
    for(i=0;i<length;i++){
        min = i;
        for(j=i+1;j<length;j++){
            if(arr[j] <arr[min])
                min = j;
        }
        if(min != i){
            k = arr[i];
            arr[i] = arr[min];
            arr[min] = k;
        }
    }
}

全部代码:

#include <stdio.h>
#include <stdlib.h>
int arrtest[10] = {3,4,7,8,0,9,1,2,6,5};
//int arrtest[10] = {0,1,2,3,4,5,6,7,8,9};
//int arrtest[10] = {9,8,7,6,5,4,3,2,1,0};
void copy(int *arr,int length);
void print(int *arr,int length);
void selectSort(int *arr,int length);
int main(){
    int Arr[10];
    copy(Arr,10);
    print(Arr,10);
    selectSort(Arr,10);
    print(Arr,10);
    getchar();
    return 0;
}
void selectSort(int *arr,int length){
    int i,j,k,min;
    for(i=0;i<length;i++){
        min = i;
        for(j=i+1;j<length;j++){
            if(arr[j] <arr[min])
                min = j;
        }
        if(min != i){
            k = arr[i];
            arr[i] = arr[min];
            arr[min] = k;
        }
    }
}
void copy(int *arr,int length){
    int i;
    for(i=0;i<length;i++){
        arr[i] = arrtest[i];
    }
}

void print(int *arr,int length){
    int i;
    for(i=0;i<length;i++){
        printf("%d ",arr[i]);
    }
    printf("\n");
}

运行示例:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Go-指针、传值与传引用、垃圾回收

要点 Go使用的*、&、new()这些运算符,和C++的用法完全一样。 有传值和传引用/传地址的概念,和C++一样。 Go没有new对应的delete操作,而是...

374100
来自专栏Golang语言社区

go 切片使用小结

最新项目使用go语言开发,因此有机会结识了go语言。在写代码时,无意间发现了同事代码的一个bug。今天拿来一起学习一下。 首先go语言有个强大的基本数据结构,那...

34680
来自专栏vue学习

前端面试题总结(持续更新。。)

17220
来自专栏xingoo, 一个梦想做发明家的程序员

快速排序

快速排序时间复杂度为O(nlogn),由于是在原数组上面利用替换来实现,因此不需要额外的存储空间。 算法思想:   通过设置一个岗哨,每次跟这个岗哨进行比较,比...

221100
来自专栏柠檬先生

Angularjs基础(十)

ng-blur  描述:规定blur 事件的行为       实例:当输入框失去焦点的(onblur)时执行表达式:         <input ng...

20850
来自专栏电光石火

mybatis在xml文件中处理大于号小于号的方法

用了转义字符把>和<替换掉,然后就没有问题了。

276100
来自专栏Golang语言社区

深入解析 Go 中 Slice 底层实现

切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和...

12020
来自专栏Golang语言社区

Go-指针、传值与传引用、垃圾回收

要点 Go使用的*、&、new()这些运算符,和C++的用法完全一样。 有传值和传引用/传地址的概念,和C++一样。 Go没有new对应的delete操作,而是...

33550
来自专栏Golang语言社区

Go-指针、传值与传引用、垃圾回收

要点 Go使用的*、&、new()这些运算符,和C++的用法完全一样。 有传值和传引用/传地址的概念,和C++一样。 Go没有new对应的delete操作,而是...

35350
来自专栏小程序的道路

小程序渲染

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。通过遍历数据,将数据展示,类似vue中的 v-for。 wx:for-...

16520

扫码关注云+社区

领取腾讯云代金券