c: Selection Sort

SortAlgorithm.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*****************************************************************//**
 * \file   SortAlgorithm.h
 * \brief  业务操作方法
 * VSCODE   c11  https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/2.selectionSort.md
 * \author geovindu,Geovin Du
 * \date   2023-09-19
***********************************************************************/
#ifndef SORTALGORITHM_H
#define SORTALGORITHM_H
 
#include <stdio.h>
#include <stdlib.h>
 
 
int* BubbleSort(int* data,int lensize);
 
void selectionSort(int arr[], int len);
 
 
 
#endif //SORTALGORITHM_H

  

SortAlgorithm.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*****************************************************************//**
 * \file   SortAlgorithm.c
 * \brief  业务操作方法
 * VSCODE   c11  https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/2.selectionSort.md
 * \author geovindu,Geovin Du
 * \date   2023-09-19
***********************************************************************/
 
 
#include <stdio.h>
#include <stdlib.h>
 
 
/**1。冒泡排序法 ElementType data[] **/
int* BubbleSort(int* data,int lensize)
{
    int i,j,tmp;
    int* newdate;
    /* 原始数据 */
    //int lensize=sizeof(data) / sizeof(data [0]);//sizeof(data); //sizeof(data) / sizeof(data[0]);//
    printf("2共 長度是:%d ",lensize);
    printf("冒泡排序法:\n原始数据为:");
    for (i=0;i<lensize;i++)
        printf("%3d",data[i]);
    printf("\n");
 
    for (i=(lensize-1);i>=0;i--)     /* 扫描次数 */
    {
        for (j=0;j<i;j++)/*比较、交换次数*/
        {
            if (data[j]>data[j+1])   /* 比较相邻两数,如第一个数较大则交换 */
            {
                tmp=data[j];
                data[j]=data[j+1];
                data[j+1]=tmp;
            }
        }
        printf("第 %d 次排序后的结果是:",lensize-i); /*把各次扫描后的结果打印出来*/
        for (j=0;j<lensize;j++)
            printf("%3d",data[j]);
        printf("\n");
    }
    //printf("最终排序的结果为:");
    for (i=0;i<lensize;i++)
        //newdate[i]=data[i];
        printf("%3d",data[i]);
    printf("\n");
 
    return data;
 
}
 
 
void swap(int *a,int *b) //交換兩個變數
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
 
/**2 C Program for Selection Sort 选择排序*/
void selectionSort(int arr[], int len)
{
    int i,j;
 
        for (i = 0 ; i < len - 1 ; i++)
       {
                int min = i;
                for (j = i + 1; j < len; j++)     //走訪未排序的元素
                        if (arr[j] < arr[min])    //找到目前最小值
                                min = j;    //紀錄最小值
                swap(&arr[min], &arr[i]);    //做交換
        }
 
     
 
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*****************************************************************//**
 * \file   helloworld.C
 * \brief  业务操作方法
 * VSCODE   c11
 * \author geovindu,Geovin Du
 * \date   2023-09-19
***********************************************************************/
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "include/SortAlgorithm.h"
 
 
typedef int ElementType;
 
 
 
 
int main()
{
    ////SetConsoleOutputCP(65001); 
    printf("hello word\n");
    printf("你好,中囯\n");
    int i;
    int *p;   
    char str[20];
 
    int data[12]={60,50,39,27,12,8,45,63,20,2,10,88};   /* 原始数据 */
    int lensize=sizeof(data) / sizeof(data [0]);//sizeof(data);
    p=BubbleSort(data,lensize);
     
    itoa(lensize, str, 10);
    printf("1共長度是 %d ",lensize);
     
    printf("最终排序的结果为:");
    for (i=0;i<lensize;i++)
        printf("%3d",p[i]);
    printf("\n");
    //选择排序
    int arr[] = { 64, 25, 12, 22, 11,88,28,100 };
    int n = sizeof(arr) / sizeof(arr[0]);
    selectionSort(arr, n);
    int ii;
    for(ii = 0; ii < n; ii++)
        printf("%d ", arr[ii]);
    printf("\n");
 
 
    system("pause");
    return 0;
 
 
}

  

 

posted @   ®Geovin Du Dream Park™  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2022-09-19 java: Facade Pattern
2018-09-19 MySQL5.7: sql script demo
2011-09-19 sql uniqueidentifier转换成varchar 数据类型
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示