洗牌算法

面试问题:如何对10首音乐随机播放?

知识点:洗牌算法。

C++版:

[cpp]  view plain copy
  1. #include <cstdlib>  
  2. #include <iostream>  
  3. using namespace std;  
  4.   
  5. int rand(int range_start, int range_end)  
  6. {  
  7.     srand((unsigned int)time(NULL));  
  8.     return rand()%(range_end - range_start) + range_start;  
  9. }  
  10.   
  11. void swap(int* a, int* b)  
  12. {  
  13.     int* temp;  
  14.     *temp = *a;  
  15.     *a = *b;  
  16.     *b = *temp;  
  17. }  
  18. void shuffle(int a[], int len)  
  19. {  
  20.     int shuffle_key;  
  21.     for(int i = 0; i< len; i++)  
  22.     {  
  23.         shuffle_key = rand(0, len);  
  24.         swap(a[i], a[shuffle_key]);  
  25.     }  
  26. }  
  27.   
  28. int main(int argc, char *argv[])  
  29. {  
  30.     int a[8]={3, 5, 7, 2, 12, 1, 5, 6};  
  31.     shuffle(a, 8);  
  32.     for(int i = 0; i < 8; i++)  
  33.     {  
  34.         printf("%d", a[i]);  
  35.     }  
  36.     system("PAUSE");  
  37.     return EXIT_SUCCESS;  
  38. }  

Java版:

[java]  view plain copy
  1. import java.util.Random;  
  2.   
  3. public class agorithm {  
  4.     public static void main(String arg[]){  
  5.         String[] musicUrl={"/music/1.mp3",  
  6.                 "/music/2.mp3",  
  7.                 "/music/3.mp3",  
  8.                 "/music/4.mp3",  
  9.                 "/music/5.mp3",  
  10.                 "/music/6.mp3",  
  11.                 "/music/7.mp3",  
  12.                 "/music/8.mp3",  
  13.                 "/music/9.mp3",  
  14.                 "/music/10.mp3"};  
  15.           
  16.         shuffle(musicUrl);  
  17.         for(String music:musicUrl){  
  18.             System.out.println(music);  
  19.         }  
  20.     }  
  21.     public static void shuffle(String[] musicUrl){  
  22.         int shuffle_key;  
  23.         String temp;  
  24.         Random rand = new Random();  
  25.           
  26.         for(int i = 0; i < musicUrl.length; i++){  
  27.             shuffle_key = rand.nextInt(musicUrl.length-1);  
  28.             temp = musicUrl[i];  
  29.             musicUrl[i] = musicUrl[shuffle_key];  
  30.             musicUrl[shuffle_key] = temp;  
  31.         }  
  32.     }  
  33. }  

你可能感兴趣的:(洗牌算法)