排序算法——直接選擇排序
阿新 • • 發佈:2018-06-24
mage 算法 pri vat __name__ 程序實現 highlight include 方法
一、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()
運行結果:
排序算法——直接選擇排序