冒泡排序
- /*冒泡排序*/
- /*冒泡排序思想:
- * 1)对数组中各数据,依次比较相邻两个元素的大小
- * 2)如果前面的数据大于后面的数据,交换这两个数据,经过一轮的多次比较排序后,就可以把最小的数据排好
- * 3)然后让剩下的数据逐次进行比较
- * */
- #include "iostream"
- using namespace std;
- #define N 15
- void bubbleSort(int a[],int n)
- {
- int temp;
- for(int i=0;i<n;i++)
- {
- //for(int j=n-1;j>i;j--)//这条和下一条是一个意思
- for(int j=i+1;j<n;j++)
- {
- if(a[j-1]>a[j])
- {
- temp = a[j-1];
- a[j-1] = a[j];
- a[j]=temp;
- }
- }
- }
- cout<<"已排序"<<endl;
- }
- int main()
- {
- int num[N];
- srand(time(NULL));
- for(int i=0;i<N;i++)
- {
- num[i]=rand()%100;
- }
- //show the nums
- for(int i=0;i<N;i++)
- {
- cout<<num[i]<<" ";
- }
- cout<<endl;
- bubbleSort(num,N);
- //show the nums
- for(int i=0;i<N;i++)
- {
- cout<<num[i]<<" ";
- }
- cout<<endl;
- return 0;
- }
直接选择排序
- /*选择排序*/
- /*选择排序思想
- * 1)首先选择1个最小的元素,将其与位于第1个位置的数据交换
- * 2)在剩余的N-1个元素中选择次小的一个元素,与位于第2个位置的数据交换
- * 3)依次,交换排序*/
- #include "iostream"
- using namespace std;
- #define N 15
- void selectSort(int a[],int n)
- {
- int temp;
- int min;
- int index = -1;
- for(int i=0;i<n;i++)
- {
- min= a[i];
- for(int j=i;j<n;j++)
- {
- if(min>a[j])
- {
- min = a[j];
- index = j;
- }
- }
- if(index != -1)
- {
- temp = a[i];
- a[i]=a[index];
- a[index] = temp;
- }
- }
- }
- int main()
- {
- int num[N];
- srand(time(NULL));
- for(int i=0;i<N;i++)
- {
- num[i]=rand()%100;
- }
- //show the nums
- for(int i=0;i<N;i++)
- {
- cout<<num[i]<<" ";
- }
- cout<<endl;
- selectSort(num,N);
- //show the nums
- for(int i=0;i<N;i++)
- {
- cout<<num[i]<<" ";
- }
- cout<<endl;
- }