排序算法——直接选择排序

一、C 程序实现

/*******************************************************
* Description: 直接选择排序
* Author: shujuxiong
* Version: 1.0
* Time: 2018-06-24
*******************************************************/
#include <stdio.h>

//函数:打印数组
void PrintDataArray(int a[], int n)
{
    for(int i=0; i<n; i++)
        printf("%d ",a[i]);
    printf("\n");
}


void SelectSort(int a[], int n)
{
    for(int i = 0; i < n; i++)
    {
        int min = i;
        for(int j = i+1; j < n; j++)
        {
            if(a[j] < a[min])
                    min = j;
        }
        int tmp = a[i];
        a[i] = a[min];
        a[min] = tmp;
    }
    PrintDataArray(a, n);
}


//测试用例
int main()
{
    int a[] = {3,1,7,5,2,4,9,6};
    int len = sizeof(a)/sizeof(a[0]);
    SelectSort(a, len);
    return 0;
}

 运行结果:

二、Java 程序实现

/**
 * @description: 直接选择排序算法
 * @author: shujuxiong
 * @version: 1.0
 * @date: 2018-06-24
 */
public class SelectSort {
	public static void sort(int[] a)
	{
		int N = a.length;
		for(int i = 0; i < N; i++)
		{
			int min = i;
			for(int j = i+1; j < N; j++)
			{
				if(a[j] < a[min])
					min = j;
			}
			int tmp = a[i];
			a[i] = a[min];
			a[min] = tmp;
		}
	}
	
	
	//方法:打印数组
	private static void printDataArray(int[] a)
	{
		int N = a.length;
		for(int i = 0; i < N; i++)
			System.out.printf("%d ",a[i]);
		System.out.printf("\n");
	}
		
		
	//测试用例
	public static void main(String[] args)
	{
		int[] arr = {3,1,7,5,2,4,9,6};
		sort(arr);
		printDataArray(arr);
	}		

}

运行结果:

三、Python 程序实现

# -*- coding: utf-8 -*-
"""
Description: 直接选择排序算法
Author: shujuxiong
Version: 1.0
Date: 2018-06-24
"""

import copy


##选择排序
def selectSort(relist):
    N = len(relist)
    for i in range(N):
        min = i;
        for j in range(i+1,N):
            if relist[j] < relist[min]:
                min = j
        tmp = relist[i];
        relist[i] = relist[min]
        relist[min] = tmp
    
    return relist


##测序用例
def main():
    mylist = [3,1,7,5,2,4,9,6]
    print(selectSort(copy.copy(mylist)))


if __name__=='__main__':
    main()

运行结果:

猜你喜欢

转载自www.cnblogs.com/shujuxiong/p/9221242.html