c: Selection Sort

发布时间 2023-09-19 22:59:49作者: ®Geovin Du Dream Park™

SortAlgorithm.h

/*****************************************************************//**
 * \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 selection_sort(int arr[], int len);



#endif //SORTALGORITHM_H

  

SortAlgorithm.c

/*****************************************************************//**
 * \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 selection_sort(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]);    //做交換
        }

	

}

  

/*****************************************************************//**
 * \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]);
    selection_sort(arr, n);
    int ii;
    for(ii = 0; ii < n; ii++)
        printf("%d ", arr[ii]);
    printf("\n");


    system("pause");
    return 0;


}