2015.08.15冒泡排序
生活随笔
收集整理的這篇文章主要介紹了
2015.08.15冒泡排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言冒泡排序法: {冒泡最終思想是for嵌套循環: 定義數組——隨機數a[i] = arc4random_uniform(隨機N);并打印——for外不循環控制趟數=元素個數-1 ——for中(i+j) = 定值(元素總個數)內部控制循環次數j<</b>(元素個數 - 1 - i)——//遍歷數組查并打印 // ? 總結;********************************************************************************************** 1、開始是元素個數-1趟進行完畢? ?、 //第一趟 //??? for (int i = 0; i < 4 - 1; i ++) {
//??????? if (arr[i] > arr[i + 1]) {
//??????????? int temp = arr[i];
//??????????? arr[i] = arr[i +1];
//??????????? arr[i + 1] = temp;
//???????????
//???????????
//??????? } //??? } 2、每走完一趟要進行遍歷數組 //遍歷數組 //??? for (int i = 0; i < 4; i ++) {
//??????? printf("%d\t",arr[i]); //??? } 3、循環完內部進行外部循環來控制趟數:趟數 = 元素個數減1,并且新定義的 ?j + i= 元素總個數是定值;所以 j < 元素個數-1 - i; //??? //外部循環用來控制趟數,比較的趟數等于元素個數-1
//??? //??? j + i = 4;
//??? for (int i = 0; i < 4 - 1; i ++) {
//??????? for (int j = 0; j < 4 - i - 1; j ++) {
//??????????? if (arr[j] > arr[j + 1]) {
//??????????????? int temp = arr[j];
//??????????????? arr[j] = arr[j + 1];
//??????????????? arr[j +1 ] = temp;
//??????????? }
//??????? } //??? } 4、最后再遍歷數組查驗: //??? //遍歷數組
//??? for (int i = 0; i < 4; i ++) {
//??????? printf("%d\t",arr[i]); //??? } ************************************************************************************************************************************
//#import
//
//??? int main( ) //主函數入口
//??? { //表示主函數開始
//??????? int i,j; //定義整形變量i和j
//??????? int grade[5],temp; //定義N維(N=5,也就是五維啦^^)整形數組和整形變量temp
//??????? printf("輸入5個數\n"); //在屏幕上顯式“輸入5個數”并且換行
//??????? for(i=0;i<5;i++) //開始for循環,從i=0,每次加1,直到i=4,共需循環5次
//??????? { //循環體開始
//??????????? scanf("%d",&grade[i]); //依次獲取用戶輸入的整數值并存入數組grade中
//??????? } //循環結束
//??????? for(i=0;i<5;i++) //開始外層for循環,從i=0,每次加1,直到i=4
//??????? { //外層循環體開始
//??????????? for(j=0;j<5-1-i;j++) //開始外層for循環,從j=0,每次加1直到i等于外層循環的N-j-1
//??????????? { //內層循環體開始
//??????????????? if(grade[j]
//??????????????? { //如果整形數組前面的數比其后的小,執行以下語句
//??????????????????? temp=grade[j+1]; //將比較大的數賦值給temp
//??????????????????? grade[j+1]=grade[j]; //將比較小的數賦值給數組中后面的變量
//??????????????????? grade[j]=temp; //將比較大的數賦值給數組中前面的變量
//??????????????? } //從此便完成大小變量的交換,使得大值往前放
//??????????? } //結束內層循環
//??????? } //結外內層循環,完成排序
//??????? printf("最后排序為:\n");//在屏幕顯式“最后排序為:”并換行
//??????? for(i=0;i<5;i++) //同開始的for循環類似
//??????? { //開始循環輸出
//??????????? printf("%d",grade[i]); //只是這里要逐個輸出數組中的五個數值
//??????? } //結束循環輸出
//??????? printf("\n"); //輸出換行到屏幕,看不到什么效果,可刪掉
// ??? //結束main()函數 // ? ******************************經典例題************************************* 編寫一個程序,輸入兩個包含5個元素的數組,先將兩個數組升序排序,然 后將這兩個數組合并成一個升序數組。 ??? //先定義兩個數組
//??? int a[5] = {0};
//??? int b[5] = {0};
//??? int c [10] = {0};
//??? printf("\n排序前:\n");
//??? //打出兩個隨機數組
//??? for (int i = 0; i < 5; i ++) {
//??????? a[i] = arc4random_uniform(100);
//??????? b[i] = arc4random_uniform(100);
//??????? printf("a[%d] = -\t,b[%d] = -\n",i,a[i],i,b[i]);
//???????
//??? }
//??? //外部循環控制趟數
//??? for (int i = 0; i < 5 - 1; i ++) {
//??????? //內部控制循環次數
//??????? for (int j = 0; j < 5 - 1 - i; j ++) {
//??????????? if (a[j] > a[j + 1]) {
// ??????????????? int x = a[j];
//??????????????? a[j] = a[j + 1];
//??????????????? a[j + 1] = x;
//??????????? }
//??????????? if (b[j] > b[j +1]) {
//??????????????? int y = b[j];
//??????????????? b[j] = b[j +1];
//??????????????? b[j + 1] = y;
//??????????? }
//??????? }
//??? }
//??? printf("\n排序后:\n");
//??? //遍歷數組查看
//??? for (int i = 0; i < 5; i ++) {
//??????? printf("a[%d] = -\t b[%d] = -\n",i,a[i],i,b[i]);
//??? }
//??? //將兩個數組放到一個數組c中
//??? for (int i = 0; i < 10; i ++) {
//??????? if (i < 5) {
//??????????? c[i] = a[i];
//??????? } else {
//??????????? c[i] = b[i - 5];
//??????? }
//??? }
對數組c進行升序排序
//??? for (int i = 0; i < 10- 1; i ++) {
//??????? if (c[i] > c[i +1]) {
//??????????? int temp = c[i];
//??????????? c[i] = c[i + 1];
//??????????? c[i +1] = temp;
//??????? }
//??? }
//??? //遍歷循環查驗
//??? printf("\n重組排序后:\n");
//??? for (int i = 0; i < 10; i ++) {
//??????? printf("a[%d] = -\n",i,c[i]); //??? }
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
//??????? if (arr[i] > arr[i + 1]) {
//??????????? int temp = arr[i];
//??????????? arr[i] = arr[i +1];
//??????????? arr[i + 1] = temp;
//???????????
//???????????
//??????? } //??? } 2、每走完一趟要進行遍歷數組 //遍歷數組 //??? for (int i = 0; i < 4; i ++) {
//??????? printf("%d\t",arr[i]); //??? } 3、循環完內部進行外部循環來控制趟數:趟數 = 元素個數減1,并且新定義的 ?j + i= 元素總個數是定值;所以 j < 元素個數-1 - i; //??? //外部循環用來控制趟數,比較的趟數等于元素個數-1
//??? //??? j + i = 4;
//??? for (int i = 0; i < 4 - 1; i ++) {
//??????? for (int j = 0; j < 4 - i - 1; j ++) {
//??????????? if (arr[j] > arr[j + 1]) {
//??????????????? int temp = arr[j];
//??????????????? arr[j] = arr[j + 1];
//??????????????? arr[j +1 ] = temp;
//??????????? }
//??????? } //??? } 4、最后再遍歷數組查驗: //??? //遍歷數組
//??? for (int i = 0; i < 4; i ++) {
//??????? printf("%d\t",arr[i]); //??? } ************************************************************************************************************************************
//#import
//
//??? int main( ) //主函數入口
//??? { //表示主函數開始
//??????? int i,j; //定義整形變量i和j
//??????? int grade[5],temp; //定義N維(N=5,也就是五維啦^^)整形數組和整形變量temp
//??????? printf("輸入5個數\n"); //在屏幕上顯式“輸入5個數”并且換行
//??????? for(i=0;i<5;i++) //開始for循環,從i=0,每次加1,直到i=4,共需循環5次
//??????? { //循環體開始
//??????????? scanf("%d",&grade[i]); //依次獲取用戶輸入的整數值并存入數組grade中
//??????? } //循環結束
//??????? for(i=0;i<5;i++) //開始外層for循環,從i=0,每次加1,直到i=4
//??????? { //外層循環體開始
//??????????? for(j=0;j<5-1-i;j++) //開始外層for循環,從j=0,每次加1直到i等于外層循環的N-j-1
//??????????? { //內層循環體開始
//??????????????? if(grade[j]
//??????????????? { //如果整形數組前面的數比其后的小,執行以下語句
//??????????????????? temp=grade[j+1]; //將比較大的數賦值給temp
//??????????????????? grade[j+1]=grade[j]; //將比較小的數賦值給數組中后面的變量
//??????????????????? grade[j]=temp; //將比較大的數賦值給數組中前面的變量
//??????????????? } //從此便完成大小變量的交換,使得大值往前放
//??????????? } //結束內層循環
//??????? } //結外內層循環,完成排序
//??????? printf("最后排序為:\n");//在屏幕顯式“最后排序為:”并換行
//??????? for(i=0;i<5;i++) //同開始的for循環類似
//??????? { //開始循環輸出
//??????????? printf("%d",grade[i]); //只是這里要逐個輸出數組中的五個數值
//??????? } //結束循環輸出
//??????? printf("\n"); //輸出換行到屏幕,看不到什么效果,可刪掉
// ??? //結束main()函數 // ? ******************************經典例題************************************* 編寫一個程序,輸入兩個包含5個元素的數組,先將兩個數組升序排序,然 后將這兩個數組合并成一個升序數組。 ??? //先定義兩個數組
//??? int a[5] = {0};
//??? int b[5] = {0};
//??? int c [10] = {0};
//??? printf("\n排序前:\n");
//??? //打出兩個隨機數組
//??? for (int i = 0; i < 5; i ++) {
//??????? a[i] = arc4random_uniform(100);
//??????? b[i] = arc4random_uniform(100);
//??????? printf("a[%d] = -\t,b[%d] = -\n",i,a[i],i,b[i]);
//???????
//??? }
//??? //外部循環控制趟數
//??? for (int i = 0; i < 5 - 1; i ++) {
//??????? //內部控制循環次數
//??????? for (int j = 0; j < 5 - 1 - i; j ++) {
//??????????? if (a[j] > a[j + 1]) {
// ??????????????? int x = a[j];
//??????????????? a[j] = a[j + 1];
//??????????????? a[j + 1] = x;
//??????????? }
//??????????? if (b[j] > b[j +1]) {
//??????????????? int y = b[j];
//??????????????? b[j] = b[j +1];
//??????????????? b[j + 1] = y;
//??????????? }
//??????? }
//??? }
//??? printf("\n排序后:\n");
//??? //遍歷數組查看
//??? for (int i = 0; i < 5; i ++) {
//??????? printf("a[%d] = -\t b[%d] = -\n",i,a[i],i,b[i]);
//??? }
//??? //將兩個數組放到一個數組c中
//??? for (int i = 0; i < 10; i ++) {
//??????? if (i < 5) {
//??????????? c[i] = a[i];
//??????? } else {
//??????????? c[i] = b[i - 5];
//??????? }
//??? }
對數組c進行升序排序
//??? for (int i = 0; i < 10- 1; i ++) {
//??????? if (c[i] > c[i +1]) {
//??????????? int temp = c[i];
//??????????? c[i] = c[i + 1];
//??????????? c[i +1] = temp;
//??????? }
//??? }
//??? //遍歷循環查驗
//??? printf("\n重組排序后:\n");
//??? for (int i = 0; i < 10; i ++) {
//??????? printf("a[%d] = -\n",i,c[i]); //??? }
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的2015.08.15冒泡排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ3836 : [Poi2014]
- 下一篇: JavaScript获取当前根目录